|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
[Python]Bytecode
Stavo dando un occhio alle macchine virtuali stack-based e ho scoperto una cosina cool di python
Codice:
>>> def re_check(obj, pattern):
""" Generic regex checking function (case insensitive) [True/Fase] """
p = re.compile(pattern, re.IGNORECASE)
m = p.match(obj)
if m:
return True
else:
return False
>>> dis.dis(re_check)
3 0 LOAD_GLOBAL 0 (re)
3 LOAD_ATTR 1 (compile)
6 LOAD_FAST 1 (pattern)
9 LOAD_GLOBAL 0 (re)
12 LOAD_ATTR 2 (IGNORECASE)
15 CALL_FUNCTION 2
18 STORE_FAST 2 (p)
4 21 LOAD_FAST 2 (p)
24 LOAD_ATTR 3 (match)
27 LOAD_FAST 0 (obj)
30 CALL_FUNCTION 1
33 STORE_FAST 3 (m)
5 36 LOAD_FAST 3 (m)
39 POP_JUMP_IF_FALSE 46
6 42 LOAD_GLOBAL 4 (True)
45 RETURN_VALUE
8 >> 46 LOAD_GLOBAL 5 (False)
49 RETURN_VALUE
50 LOAD_CONST 1 (None)
53 RETURN_VALUE
>>> def power2(power):
for x in range(0, power+1):
n = 1 << x
print "2^%d \t %d" % (x, n)
>>> dis.dis(power2)
2 0 SETUP_LOOP 52 (to 55)
3 LOAD_GLOBAL 0 (range)
6 LOAD_CONST 1 (0)
9 LOAD_FAST 0 (power)
12 LOAD_CONST 2 (1)
15 BINARY_ADD
16 CALL_FUNCTION 2
19 GET_ITER
>> 20 FOR_ITER 31 (to 54)
23 STORE_FAST 1 (x)
3 26 LOAD_CONST 2 (1)
29 LOAD_FAST 1 (x)
32 BINARY_LSHIFT
33 STORE_FAST 2 (n)
4 36 LOAD_CONST 3 ('2^%d \t %d')
39 LOAD_FAST 1 (x)
42 LOAD_FAST 2 (n)
45 BUILD_TUPLE 2
48 BINARY_MODULO
49 PRINT_ITEM
50 PRINT_NEWLINE
51 JUMP_ABSOLUTE 20
>> 54 POP_BLOCK
>> 55 LOAD_CONST 0 (None)
58 RETURN_VALUE
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Penso che se le prestazioni sono in assoluto importanti, rappresentano la via da seguire.
Comunque se oggi fossi stato all'EuroPython avresti potuto seguire un bellissimo talk di Larry Hastings proprio sui bytecode. P.S. Io sono andato un po' oltre. Nella sezione download ci sono pure le slide.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
|
Quote:
Ma non ha più avuto prosieguo questo progetto? ho visto che le ultime modifiche sono 2009/2010....
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza" Ultima modifica di mone.java : 04-07-2013 alle 11:04. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E' fermo per cronica mancanza di tempo. Ho tante idee che potrebbero migliorare notevolmente il progetto, ma al momento non riesco proprio a farcela...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
|
Peccato sembrava molto interessante... Hai cercato di crearci attorno una comunità? purtroppo io non sono abituato a pensare cosi a basso livello... però mi intriga tantissimo...
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza" |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
L'interesse c'è a parole, perché alla fine nessuno si impegna in progetti complessi come questo. Dopo i complimenti, insomma, devo sempre essere io a continuare. Solo che ho poco tempo, e ho altro a cui cui pensare.
Ma so che ritornerò a lavorarci, perché ho tanta roba che voglio implementare.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:04.



















