Нужно ускорить что-либо
Представим что есть такой скрипт
for number in range(100000):
print(number)
И мне нужно ускорить работу этого скрипта любым способом
Ответы (2 шт):
Если вам на самом деле нужно ускорить именно этот код
for number in range(100000):
print(number)
то Python и его модули врядли здесь вам смогут помочь, т.к. печать на экран занимает для 100 строк 99.89% времени:
In [72]: %%timeit
...: for number in range(100):
...: print(number)
...
1.02 ms ± 467 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
теперь тот же цикл, но без печати на экран:
In [73]: %%timeit
...: for number in range(100):
...: # print(number)
...: pass
...:
1.1 µs ± 28.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
PS если мне не изменяет память Numba не поддерживает функцию print() ;)
Если хотите заняться микро-оптимизацией - можно использовать list comprehension вместо обычного цикла:
_ = [print(i) for i in range(100000)]
Эта функция на моём компьютере исполняется 0.015 с. Стандартный вывод перенаправлен в /dev/null:
def pr_3():
print('\n'.join(map(str, range(100000))))
Оригинальная функция тратит 0.042 с:
def pr():
for number in range(100000):
print(number)
Я пробовал всевозможные вариации с numpy, быстрее ничего не нашел.
Забыл baseline, работает 0.000035 с:
def pr_4():
print('''0
1
...
99998
99999''')