2015-07-02 19 views
19

Perché la gente non usa il file python compilato ogni volta che ha bisogno di ottimizzazione? Quindi il codice non dovrà essere intercettato, quindi compilato.perché la gente dice che python è lento perché è interpretato? Ha file .pyc

C'è qualcosa che mi manca? Mi sembra un problema semplice.

+9

Python compila in bytecode che viene quindi interpretato. Quel bytecode è memorizzato nella cache in file pyc e usato automaticamente. È l'interpretazione che è 'lenta' qui. –

+3

Esistono altre soluzioni come [Compilatore JIT] (https://en.wikipedia.org/wiki/Just-in-time_compilation). [PyPy] (http://pypy.org/) fa questo. –

+3

La gente dice che è lento perché è un linguaggio di così alto livello. –

risposta

34

Credo che questo sia sufficiente per correggere il tuo malinteso.

Un programma non viene eseguito più velocemente quando viene letto da un file .pyc o .pyo rispetto a quando viene letto da un file .py; l'unica cosa che è più veloce nei file .pyc o .pyo è la velocità con cui vengono caricati.

fonte: https://docs.python.org/2/tutorial/modules.html#packages

+0

Tuttavia, qualsiasi linguaggio dipendente dal bytecode di solito sarà (leggermente) più lento di una routine ottimizzata sviluppata per sfruttare il set di istruzioni di un particolare hardware. La differenza conta davvero? Ovviamente no. La portabilità dell'uso di bytecode compensa la perdita di prestazioni (rispetto al set di istruzioni nativo ottimizzato). – sfdcfox

+15

@sfdcfox Non c'è "ovviamente no" a riguardo. Se la velocità è importante o meno dipende da ciò che stai facendo. –

+2

@sfdcfox Provare a eseguire simulazioni di fisica su larga scala in un linguaggio interpretato e quindi riprovare in una versione compilata. Inizia con il codice interpretato: avrai tempo a sufficienza per scrivere il codice compilato, eseguirlo e analizzare i dati prima che finisca quello interpretato. – tpg2114

11

Python viene interpretata anche se è letto da un pyc-file. Come già detto nella risposta this, i file pyc accelerano solo l'avvio del programma, non l'esecuzione. I comandi memorizzati in file pyc non sono codici macchina, sono solo comandi di livello Python che saranno comunque interpretati dall'interprete python. D'altra parte, quando si utilizza un programma scritto in C, il file eseguibile di tale programma è costituito da codici macchina, che vengono "interpretati" direttamente dalla CPU.