Я работаю над python функцией на графиках, которая является рекурсивной и NP комплексной. Тем не менее, у меня были результаты очень долго, поэтому я использовал kernprof, чтобы увидеть, какие строки занимают больше времени.
Я увидел, что эта строка отнимает больше времени, чем я думал:
Line # Hits Time Per Hit % Time Line Contents
==============================================================
...
53 120244 740797.0 6.2 17.0 if any( [m[passed].get(i, False) for passed in isom] ): # si ce noeud est lié à un noeud passé, le tester
Так что я решил использовать генератор, потому что, похоже, мне не следует генерировать весь список, потому что мне просто интересно, если таковое есть.
Но с генератором у меня есть такой результат:
Line # Hits Time Per Hit % Time Line Contents
==============================================================
...
53 35283 509901.0 14.5 12.8 if any( (m[passed].get(i, False) for passed in isom) ): # si ce noeud est lié à un noeud passé, le tester
Так что кажется, что это быстрее, чем с пониманием списка, но я не понимаю, почему время на удар больше, и почему у меня гораздо меньше хитов?