Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 November 13

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
вот пример моего бенчмарка без timeit
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
когда я не знал про timeit
тут погрешность которую вносит переключение контекста компенсирует количество операций большое
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
если, скажем, для одной операции может случайно выпасть 100мс или 10мс
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
а в реальности 8мс операция занимает
и погрешность 92мс
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
то сделав 10к таких операций и усреднив - мы погрешность в сто раз уменьшим
потому что шум случайный падает как корень из N
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
то есть 0.92мс будет для 10к измерений погрешность
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
с 4.6% погрешностью бенчмарк подтверждает линейную сложность алгоритма)
источник

E

Eagint in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Хорошо что я немного ошибся (а вы мне подсказали) в выборе инструмента для замера времени
А то реально подумал что фстринги быстрее
источник

AF

Avazart FL in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
В теории быстрее должно быть форматирование так как есть возможность оптимизировать выделение памяти.
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
чет не та какая то теория)
источник

AF

Avazart FL in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Скорее с реализацией не то.
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
если мы используем оператор сложения - т.к. питон строго типизированный язык - мы слагаемые приводим к типу строки
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
при этом дергая конструктор один и тот же
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
а затем метод __add__ этого же класса
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
в случае же когда мы f строку получаем - нам нужно сперва разрешить имена
идем по строке и проверяем на спецсимволы
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
открывается когда скобка находим, потом когда закрывается, между ними имя находим, потом только кастим
и у нас уже каретка продвинулась
источник

AF

Avazart FL in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Реализовано внутри может по разному, это нужно знать устройство интерпретатора и Си кода
источник

s

std::slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Avazart FL
Реализовано внутри может по разному, это нужно знать устройство интерпретатора и Си кода
да как бы ни было реализовано, очевидно что это больше операций
источник

AF

Avazart FL in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Но при сложении кол-во аллокаций скорее всего будет зависеть от количества операций сложения.
источник