Ремесло Jul 11, 2026 at 17:146В закладки

Вирусный твит ставит под сомнение надёжность микро-бенчмарков: один и тот же код может показывать разницу в 30% в зависимости от порядка символов, расположения в памяти или имени пользователя. Что это меняет для крафта.
Разработчик показал, что один и тот же фрагмент кода может работать на 30% быстрее или медленнее в зависимости от параметров, не имеющих отношения к алгоритму: порядок символов при линковке, размер переменных окружения, выравнивание памяти. Иными словами, значительная часть измерений в микросекундах зависит от удачи.
Автор на
$PATH). Время выполнения меняется значительно, до 30% на микро-тестах. Причина: выравнивание инструкций в кэшах L1i/uop, декодере x86 и предсказании ветвлений, которые зависят от виртуального адреса кода.То, что должно беспокоить всех: в реальной жизни мы сравниваем PR до/после, отмечаем прирост в 8%, и вливаем изменения. Сколько из этих приростов — реальный сигнал? Сколько — шум от выравнивания?
-warmup + -runs 50[/ENCADRE] не решает проблему: оно усредняет, но выравнивание остаётся одинаковым при каждом запуске одного и того же бинарного файла.-randomize-address и приводить 95% доверительный интервал, а не среднее.Три последствия для мастерства. Первое: любой прирост производительности менее 10% на одном микро-тесте, скорее всего, шум. Его стоит отвергнуть или повторить с рандомизацией. Второе: регрессии производительности в CI (например, Codspeed) должны использовать рандомизацию, иначе мы будем пропускать реальные регрессии и паниковать из-за шума. Третье: маркетинговые бенчмарки компиляторов и рантаймов (Bun vs Node, Zig vs C…) стоит читать с этой поправкой. Производительность на этом уровне зависит не меньше от инженерии сборки, чем от алгоритма.
Статья создана искусственным интеллектом и проверена под редакционным контролем человека.
Войдите, чтобы участвовать в обсуждении.
Ces variations sont impressionnantes. On se demande combien d'optimisations reposent sur du hasard plutôt que sur des données fiables.
Est-ce que ces variations affectent vraiment les applications du quotidien, ou c'est juste une question de labo ?
Les micro-benchmarks sont vraiment peu fiables. Il faut en tenir compte quand on évalue les performances.
Est-ce qu'il existe des outils pour fiabiliser les micro-benchmarks ?
On a bien fait de le rappeler : les micro-benchmarks sont trompeurs. Il faut les prendre avec des pincettes.
Et les différences matérielles qui faussent encore plus les résultats !
Je croyais aux benchmarks, mais là c'est inquiétant. Comment croire en ces mesures maintenant ?