В случае, когда python выполняет больше операций, он работает медленнее.
Ниже приведено очень простое сравнение двух отдельных вложенных циклов (для нахождения пифагорейской тройки (a,b,c)
, которая в сумме равна 1000):
#Takes 9 Seconds
for a in range(1, 1000):
for b in range(a, 1000):
ab = 1000 - (a + b)
for c in range(ab, 1000):
if(((a + b + c) == 1000) and ((a**2) + (b**2) == (c**2))):
print(a,b,c)
exit()
#Solution B
#Takes 7 Seconds
for a in range(1, 1000):
for b in range(a, 1000):
for c in range(b, 1000):
if(((a + b + c) == 1000) and ((a**2) + (b**2) == (c**2))):
print(a,b,c)
exit()
Я ожидал, что решение A сбрит секунду или две с решения B, но вместо этого оно увеличило время, необходимое для завершения.на две секунды.
instead of iterating
1, 1, 1
1, 1, 2
...
1, 1, 999
1, 2, 2
It would iterate
1, 1, 998
1, 1, 999
1, 2, 997
1, 2, 998
1, 2, 999
1, 3, 996
Мне кажется, что решение a должно значительно повысить скорость, сокращая тысячи операций до миллионов, но на самом деле это не так.
Я знаю, чтоЕсть простой способ значительно улучшить этот алгоритм, но я пытаюсь понять, почему Python будет работать медленнее в случае, если он будет казаться быстрее.