Вложенные циклы быстрее чем плоские в питоне? - PullRequest
4 голосов
/ 28 марта 2019

В вопросе, связанном с , возникает вопрос, почему вложение двух циклов в одну сторону (длиннее - короче) быстрее другого (короче - длиннее).

Теперь я столкнулся с плоским циклом, который работает медленнее, чем вложенный. Как это могло быть?

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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...