В вопросе, связанном с , возникает вопрос, почему вложение двух циклов в одну сторону (длиннее - короче) быстрее другого (короче - длиннее).
Теперь я столкнулся с плоским циклом, который работает медленнее, чем вложенный. Как это могло быть?
from time import perf_counter as clock
import matplotlib.pyplot as plt
def long_short():
start = clock()
counter = 0
for i in range(100):
for j in range(10):
counter += 1
return (clock() - start)*1e6
def short_long():
start = clock()
counter = 0
for i in range(10):
for j in range(100):
counter += 1
return (clock() - start)*1e6
def single():
start = clock()
counter = 0
for i in range(1000):
counter += 1
return (clock() - start)*1e6
y1, y2, y3 = [], [], []
for i in range(30):
y1.append(long_short())
y2.append(short_long())
y3.append(single())
plt.figure()
ax1 = plt.plot(y1, c="b", label="Longer loop over shorter")
ax2 = plt.plot(y2, c="g", label="Shorter loop over longer")
ax3 = plt.plot(y3, c="r", label="Single loop")
plt.xlabel("n", fontsize=16)
plt.ylabel("Time (us)", fontsize=16)
plt.legend(loc=2, fontsize=14)
plt.show()