Средняя производительность в списке Python. сумма (l)/len (l) против numpy.mean (l) ⇐ Python
Средняя производительность в списке Python. сумма (l)/len (l) против numpy.mean (l)
Дурачился над тем, как лучше всего вычислить среднее значение списка в Python. Хотя я думал, что numpy оптимизирован. Мои результаты показывают, что вам не следует использовать numpy, когда дело доходит до этого. Мне было интересно, почему и как Python достигает такой производительности.
По сути, я пытаюсь понять, почему собственный Python быстрее, чем numpy.
Мой код для тестирования:
импортировать случайным образом импортировать numpy как np импортировать время защита Average_native (л): вернуть сумму(л)/лен(л) защита среднее_np (л): вернуть np.mean(l) защита test_time (функция, аргумент): время начала = timeit.default_timer() для _ в диапазоне (500): функция(аргумент) return (timeit.default_timer() - время начала)/500 для я в диапазоне (1, 7): числа = [] для _ в диапазоне (10**i): Numbers.append(random.randint(0, 100)) print("для " + str(10**i) + " чисел:") print(test_time(average_native, Numbers)) print(test_time(average_np, цифры)) Результаты:
для 10 номеров: 2.489999999999992e-07 8.465800000000023e-06 на 100 номеров: 8.554000000000061e-07 1.3220000000000009e-05 на 1000 номеров: 7.2817999999999495e-06 6.22666э-05 на 10000 номеров: 6.750499999999993e-05 0.0005553966000000001 на 100000 номеров: 0,0006954238 0,005352444999999999 на 1000000 номеров: 0.007034196399999999 0,0568878216 Кстати, я запускал тот же код на C++ и был удивлен, увидев, что код Python работает быстрее. тестовый код:
#include #include #include #include float Calculate_average(std::vector vec_of_num) { двойная сумма=0; uint64_t cnt=0; для (авто и элем: vec_of_num) { снт++; сумма = сумма + элемент; } возвращаемая сумма / цент; } интервал основной() { // Эта программа создаст ту же последовательность // случайные числа при каждом запуске программы std::vector vec; for(int я = 0; я
Дурачился над тем, как лучше всего вычислить среднее значение списка в Python. Хотя я думал, что numpy оптимизирован. Мои результаты показывают, что вам не следует использовать numpy, когда дело доходит до этого. Мне было интересно, почему и как Python достигает такой производительности.
По сути, я пытаюсь понять, почему собственный Python быстрее, чем numpy.
Мой код для тестирования:
импортировать случайным образом импортировать numpy как np импортировать время защита Average_native (л): вернуть сумму(л)/лен(л) защита среднее_np (л): вернуть np.mean(l) защита test_time (функция, аргумент): время начала = timeit.default_timer() для _ в диапазоне (500): функция(аргумент) return (timeit.default_timer() - время начала)/500 для я в диапазоне (1, 7): числа = [] для _ в диапазоне (10**i): Numbers.append(random.randint(0, 100)) print("для " + str(10**i) + " чисел:") print(test_time(average_native, Numbers)) print(test_time(average_np, цифры)) Результаты:
для 10 номеров: 2.489999999999992e-07 8.465800000000023e-06 на 100 номеров: 8.554000000000061e-07 1.3220000000000009e-05 на 1000 номеров: 7.2817999999999495e-06 6.22666э-05 на 10000 номеров: 6.750499999999993e-05 0.0005553966000000001 на 100000 номеров: 0,0006954238 0,005352444999999999 на 1000000 номеров: 0.007034196399999999 0,0568878216 Кстати, я запускал тот же код на C++ и был удивлен, увидев, что код Python работает быстрее. тестовый код:
#include #include #include #include float Calculate_average(std::vector vec_of_num) { двойная сумма=0; uint64_t cnt=0; для (авто и элем: vec_of_num) { снт++; сумма = сумма + элемент; } возвращаемая сумма / цент; } интервал основной() { // Эта программа создаст ту же последовательность // случайные числа при каждом запуске программы std::vector vec; for(int я = 0; я
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение