j'ai écrit un code python comme celui-ci (il convertit le tableau des valeurs non signées à la table des octets):Python. Comment rendre mon code plus rapide?
def foo(in_value, index)
TabOut[index*2] = in_value%255
TabOut[index*2+1] = in_value//255
for i in range(0,1024):
foo(tabIn[i],i)
Je dois exécuter cette fonction 200 fois par seconde. Comment l'optimiser?
[ 'divmod()'] (https://docs.python.org/3.6/library/functions.html#divmod) pourrait aider un peu. Mais j'ai l'impression que les fondamentaux sont imparfaits. Premièrement, je ne vois pas pourquoi vous auriez besoin de calculer tous les 1024 calculs à la fois, et si pour une raison ou une autre, je ne vois pas pourquoi vous auriez besoin de le faire plus d'une fois (pourquoi ne pas le mettre en cache? ?), encore moins 200x/sec. Et même si vous pouviez me convaincre que * cela * était nécessaire, construire la table "en haut" en multipliant et en ajoutant au lieu de diviser et de soustraire semble plus rapide. – jedwards
honte il doit être 255 pas 256 ... diviser par 256 serait beaucoup plus rapide. Il y a un truc potentiel à diviser par 256 puis multiplier par (1 + 1/255) mais avec un CPU moderne, je doute que vous puissiez mesurer une différence. –
En fait je ne sais pas pourquoi c'est '% 255'. Pourquoi ne voulez-vous pas utiliser la valeur 255? S'il y a une raison spécifique qui pourrait être un contexte utile. –