Je voudrais vous présenter un module appelé nimporter car il était très émouvant. Non, l'introduction elle-même est peut-être la nième décoction, mais il semble qu'elle ne soit pas bien connue. https://github.com/Pebaz/Nimporter En bref, c'est le gars qui exécute le code ultra-rapide de nim en python comme un interpréteur.
Voici un extrait de l'exemple officiel, mais le code nim ressemble à ceci:
import nimpy
proc add(a: int, b: int): int {.exportpy.} =
return a + b
Le code python est comme ci-dessous
# Nimporter is needed prior to importing any Nim code
import nimporter, nim_math
print(nim_math.add(2, 4)) # 6
Si vous l'écrivez, ** il sera compilé automatiquement et importé **. Non, c'est vraiment une langue d'interprétation! Ce sera.
Osons calculer la séquence de nombres de Fibonacci par récurrence lente. Le code pour nim est ci-dessous.
fibnim.nim
import nimpy
proc fib(n: int): float {.exportpy.}=
if n == 1:
return 0
elif n == 2:
return 1
else:
return fib(n - 1) + fib(n - 2)
Pour python, voir ci-dessous.
fibpy.py
def fib(n: int) -> float:
if n == 1:
return 0.
elif n == 2:
return 1.
else:
return fib(n - 1) + fib(n - 2)
... Mais ça ressemble à Kusso. Importons ces deux avec python et comparons-les.
import fibpy
import nimporter, fibnim
from time import time
cycle = 36
t = time()
print(fibnim.fib(cycle))
print('Time of nim is {} sec'.format(str(time() - t)))
t = time()
print(fibpy.fib(cycle))
print('Time of python is {} sec'.format(str(time() - t)))
>>> 9227465.0
>>> Time of nim is 0.026133298873901367 sec
>>> 9227465.0
>>> Time of python is 3.1436727046966553 sec
Il faut du temps pour compiler la première fois, mais après la deuxième fois, c'est 100 fois ou plus.
Pas mal. Plutôt le premier candidat. cython est également devenu assez facile à utiliser ces jours-ci Si vous alimentez python avec des indices de type en mode python pur, vous pouvez migrer depuis python sans aucune modification. [^ ikou]
[^ ikou]: En fait, si vous ne faites pas de votre mieux pour régler, ce ne sera peut-être pas plus rapide
cythonize -i hoge.py
Vous pouvez créer un module comme celui-là, mais est-ce gênant de devoir revenir une fois à bash? Aussi, cython utilise parfois python, donc Je pense qu'il y a des moments où il est inopinément gênant lors de l'optimisation pour les copeaux.
Recommended Posts