Ш̴̴̜̥͍͕̼̙̱͙͎͍̘̀̐̔́̾̃͒̈̔̎́́͜р̧̛̺͖͖̯̖ͧͤ͋̅̽ͧ̈̐̽̆̐͋ͤͦͬ͛̃̑͞͞и̒ͥͤͯ͂ͣ̐̉̑ͫ̉̑҉̛͏̸̻͕͇͚̤͕̯̱̳͉ͅф̴̴̡̟̞͙̙̻͍̦͔̤̞̔̓́̍͗̚͢͞ͅт̨̐ͫ̂͊̄̃ͥͪ͏̫̺͍̞̼͈̩̥̜͔͜͜ы̸̴̱̺̼̠̦͍͍͍̱̖͔̖̱͉̅͑͌͒ͫ͒̀ͥ͐ͤ̅͘̕.̵̴̡̭̼̮͖͈̙͖͖̲̮̬͍͙̼̯̦̮̮ͦ̆̀̑̌ͮͧͣͯ̔̂́͟г͌ͮ̏̈͂ͯ̚҉̛̙̬̘̲̗͇͕̠̙͙̼̩͚̀͘͞ͅо̷̥̯̘̓ͤ̽͒̋̉̀̂̄̒̓̊ͨ͛́̌ͤ̂̀͠в̶̒͒̓̏̓̚҉̛̙̘̺̰̮̼̟̼̥̟̘̠̜͜н̸̷̸̲̝͈͙̰̟̻̟̰̜̟̗͎̻̻͍̿̔̃ͨ͑о̔̀̋ͫ̇̿̐ͫ͌͗ͩ҉̨̜̙̙͈͍̮̮̼̙̘̞̕͜͡ Войти !bnw Сегодня Клубы

Пока я жду когда же кофе начнёт действовать, давайте поговорим о бенчмарках. Нет, я не предлагаю ставить phoronix test suite и бряцать своими железками, поговорим о муках выбора между двумя имплементациями функции.
Допустим я написал функцию f(const char,size_t) которая делает преобразование данных и делает это хорошо (но долго). Допустим я написал функцию f2(const char,size_t), которая делает то же самое преобразование и тоже делает это хорошо (и тоже долго). Как определить какая функция работает быстрее (на сферических данных в вакууме)?
Обычно я запускаю каждую функцию по сто раз (или по десять, если они реально медленные) и засекаю, сколько времени функции потратили на выполнение ста итераций, и вывожу количество затраченных миллисекунд в консоль. От запуска к запуску цифры скачут на 10-15%. Тогда я пишу ещё один внешний цикл, который запускает сто итераций десять раз и выводит лучшие времена среди этих десяти. Цифры теперь скачут на 5% — тут уже ничего не поделать, фрагментация памяти, случайные контекст свитчи, фазы луны. Можно увеличить количество итераций и тогда разброс стабилизируется, но всё равно мне ни разу не удалось сделать его менее одного процента, а время выполнения бенчмарка всё растёт и растёт.
Вопрос, как правильно выбирать критерий останова для подобных бенчмарках? Как сделать запуски сферическими в вакууме, чтобы ничего программе не мешало? callgrind не предлагать — он меряет количество выполненных процессорных операций, которое не обязательно отражает точное время (ибо кэшмиссы и прочее).

#OMQRIH / @hirthwork / 3755 дней назад

сами раставьте теги в правильном порядке
#OMQRIH/P31 / @hirthwork / 3755 дней назад
> когда же кофе начнёт действовать На пробежку собрался или турнички?
#OMQRIH/UAA / @l29ah / 3755 дней назад
@l29ah я по утрам ~~хуйнёй~~ спортом страдаю. под кофе лучше жир сгорает разве?
#OMQRIH/V19 / @hirthwork --> #OMQRIH/UAA / 3755 дней назад
> как правильно выбирать критерий останова для подобных бенчмарках? Зависит от того, зачем тебе нужен бенчмарк.
#OMQRIH/IA4 / @l29ah / 3755 дней назад
@l29ah чтобы выбрать имплементацию, которая будет терабайты данных в продакшене через себя пропускать
#OMQRIH/8AN / @hirthwork --> #OMQRIH/IA4 / 3755 дней назад
@hirthwork Да. Насколько я помню, кофеин провоцирует тебя делать моар АТФ из твоих гликогена и жыра.
#OMQRIH/T3K / @l29ah --> #OMQRIH/V19 / 3755 дней назад
@l29ah хм, а я-то, дурак, после пробежки кофе пил
#OMQRIH/45B / @hirthwork --> #OMQRIH/T3K / 3755 дней назад
@hirthwork Тогда похуй какую, лол.
#OMQRIH/YPL / @l29ah --> #OMQRIH/8AN / 3755 дней назад
@l29ah мне надо чтобы «побыстрее»
#OMQRIH/18Q / @hirthwork --> #OMQRIH/YPL / 3755 дней назад
@hirthwork Я могу врать, перепроверь.
#OMQRIH/S4B / @l29ah --> #OMQRIH/45B / 3755 дней назад
@hirthwork Ну и бери какая "побыстрее". Сам можешь посчитать зависимость вероятности соснуть с выбором от количества прогонов тестов и их усреднённых результатов и разброса.
#OMQRIH/S5U / @l29ah --> #OMQRIH/18Q / 3755 дней назад
@l29ah не могу, там какая-то хуйня полная. как будто от времени запуска зависит. соответственно, запустив один и другой тест, я получаю противоположные результаты в разные моменты времени
#OMQRIH/YEX / @hirthwork --> #OMQRIH/S5U / 3755 дней назад
@l29ah везде по разному пишут, походу может помогать сжигать только за счёт учащения сердцебиения
#OMQRIH/SSY / @hirthwork --> #OMQRIH/S4B / 3755 дней назад
@hirthwork ну значит разницы настолько нет, что похуй какую из реализаций взять же
#OMQRIH/EH2 / @stiletto --> #OMQRIH/YEX / 3755 дней назад
http://i.imgur.com/yX4uAKx.png поссал на немогущего в маркдаун якобы-программиста и дальше не читал.
#OMQRIH/FAK / @ulidtko / 3755 дней назад
@ulidtko срааать, срааать я хотел
#OMQRIH/C1L / @hirthwork --> #OMQRIH/FAK / 3755 дней назад
когда жавабляде делать нечего, она бенчмарки гоняет
#OMQRIH/GNK / @krkm / 3755 дней назад
@hirthwork я тоже срать хотел парсить твои проёбанные звёздочки в коде, тлдр кароч сорь
#OMQRIH/E20 / @ulidtko --> #OMQRIH/C1L / 3755 дней назад
@hirthwork ты же, блядь, на SO ответы пишешь, ты же, сука, на гитхабе в тредах ракуешь, — схуяли на бнв свой код не размечаешь, пидор?
#OMQRIH/0BP / @ulidtko --> #OMQRIH/C1L / 3755 дней назад
@krkm хорошо что не лысого
#OMQRIH/2OA / @hirthwork --> #OMQRIH/GNK / 3755 дней назад
@ulidtko ты меня с кем-то путаешь
#OMQRIH/NQS / @hirthwork --> #OMQRIH/0BP / 3755 дней назад
Ппц ты аутист конечно, раскладывать функции в порядке убывания перфоманса. Тебе тама не говорили на метрологии что измерить физическую величину без погрешности (инструментальной, методической) невозможно? Функции бывают быстрые и медленные (медленные если часики появляются), тут даже мерить нечего. Медленные хуячишь в другой тред или хотя бы прогрессбаром дрыгаешь, и всё ёпта. Пока ты оптимизируешь на три процента, ища истиную величину перфоманса в глубине своего ануса, портя читаемость кода, куркума ебёт твою женщину, потому что он уже написал и у него всё норм работает.
#OMQRIH/0AX / @mugiseyebrows / 3755 дней назад
@mugiseyebrows @komar, залогинься.
#OMQRIH/794 / @l29ah --> #OMQRIH/0AX / 3755 дней назад
@l29ah сорь
#OMQRIH/YSJ / @mugiseyebrows --> #OMQRIH/794 / 3755 дней назад
@mugiseyebrows пруф или потому что написал, а потом устранял узкие места, вместо перманентной дрочбы на оптимизацию
#OMQRIH/H5F / @krkm --> #OMQRIH/0AX / 3755 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.