Paras vastaus
python tulkitaan. Vaikka se muuntaa ihmisen luettavan lähteen tavukoodiksi, jonka se tallentaa .pyc-tiedostoon, ja .pyc-tiedosto on kannettava, .pyc-tiedostoa tulkitaan kuitenkin. Jotkut python-tulkit esimerkiksi tallentavat välimuistiin yksittäisiä objekteja yleisesti käytetyille kokonaisluvuille -100 – 100. Jotkut eivät. Kuinka sillä on merkitystä?
Järjestelmä voi laillisesti tulkita is-operaation, joka vertaa Object.id (): ta tosi tai vääräksi.
x = 20
x is 20 # Both True and False are valid results.
Esittely:
$ python3
Python 3.6.3 (default, Oct 3 2017, 21:45:48)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 30
>>> x is 30
True
>>> x = 23442.2
>>> x is 23442.2
False
>>>
Muuntaa python-lähde tavukoodiin vie aikaa, kohtuullisesti pythonin on nopeampi lukea .pyc-tiedosto kuin lukea lähde ja rekonstruoida .pyc.
Oli aika, enkä ole pysynyt mukana moduulien tuominen, kun python etsii hakemistosta \_\_init\_\_.py moduulin lataamiseksi. Oli järkevää pitää \_\_init\_\_.py-tiedosto pienenä, jotta se yleensä toisi toissijaisesti hyödyllisen koodin, joka asuisi .pyc-tiedostossa.
Ja menikö python-optimointi mihin tahansa? Viimeinkin tiesin, mikä oli melko kauan sitten, .pyo oli .pyc, jonka kommentit oli riisuttu.
Vastaus
Olen vastannut tähän aiemmin täällä: Quildreen Motta vastasi Voiko Pythonin kaltaisen korkean tason kielen kääntää siten, että se on yhtä nopea kuin C?
Mutta lyhyesti sanottuna ihmiset eivät käytä C: tä tai C ++: ta, koska he ”re nopeasti , he käyttävät niitä, koska heillä on jonkin verran ennustettavissa oleva suorituskyky . Ohjelmoija voi sitten käyttää aikaa ohjelmiensa optimointiin käsin ja on paljon helpompi päättää näiden optimointien tuloksesta.
Se ei ole niin helppoa dynaamisella kielellä, kuten Python. PyPy antaa sinulle nopeammin kuin C (gcc, ei täysin käsin optimoitu) suorituskyky useissa skenaarioissa, et vain voi ennustaa, milloin nämä skenaariot tapahtuvat, koska se riippuu useista tekijöistä (mitkä tiedot ovat ohjelmasi läpi, mitkä haarat on otettu, haarautuu t: n yli eli koodin kuumuus jne.).
PyPy tietysti suorittaa kaikki optimoinnit, kun se ajaa ohjelmaa, joten sen on tehtävä paljon kustannuspainotuksia ja joitain optimointeja ei sovelleta tämän takia. Aivan kuten AOT-kääntäjät voisivat viettää 3 kuukautta koodisi analysoinnilla TODELLA NOPEAN KOODIN luomiseksi, JIT-optimoijat voisivat viettää minuutteja koodin analysoinnissa. Kummassakaan tapauksessa kustannukset eivät todennäköisesti kannata, joten he eivät tee niin.
AOT-kääntäjien tekeminen Pythonille on paljon vaikeampaa, koska Python on dynaaminen kieli. AOT-kääntäjät, kuten shedskin – kokeellinen (rajoitettu-Python) – C ++ kääntäjä , käytä sen sijaan Pythonin rajoitettua osajoukkoa voidaksesi analysoida sitä staattisesti. Tämä lähestymistapa on samanlainen kuin yksi otti RPython, johon PyPy perustuu.