Artesanía Jul 11, 2026 at 17:146Añadir a favoritos

Un hilo viral cuestiona la fiabilidad de los micro-benchmarks: el mismo código puede variar un 30% según el orden de los símbolos, la posición en memoria o el nombre de usuario. Lo que esto cambia para el *craft*.
Un desarrollador demostró que un mismo fragmento de código puede ser un 30 % más rápido o más lento según parámetros que no tienen nada que ver con el algoritmo: orden de los símbolos en el enlace, tamaño de las variables de entorno, alineación de memoria. En otras palabras, gran parte de lo que medimos en microsegundos depende de la suerte.
El autor, en tiki.li/blog/lucky_code, retoma un hilo ya conocido en el mundo de los compiladores (Emery Berger, Stabilizer, ASPLOS 2013) y lo actualiza: ejecuta un mismo binario, sin modificarlo, y varía parámetros periféricos (nombre del directorio de compilación, orden de enlace de los archivos objeto, tamaño de $PATH). Los tiempos de ejecución varían significativamente, hasta más de un 30 % en micro-benchmarks. La causa: la alineación de las instrucciones en las cachés L1i/uop, el decodificador x86 y la predicción de saltos, que son sensibles a la dirección virtual del código.
Lo que debería molestar a todo el mundo: en la vida real, comparamos un PR antes/después, anotamos una mejora del 8 %, y hacemos merge. ¿Cuántas de esas mejoras son señal real? ¿Cuántas son ruido de alineación?
-warmup + -runs 50 NO resuelve el problema: promedia, pero la alineación sigue siendo la misma en cada ejecución de un mismo binario.-randomize-address y reportar un IC 95 %, no un promedio.Tres consecuencias para el oficio. Uno: cualquier mejora de rendimiento inferior al 10 % en un micro-benchmark único probablemente es ruido. Rechazarla o repetirla con randomización. Dos: las regresiones de rendimiento en CI (como Codspeed) deben adoptar la randomización, o dejaremos pasar regresiones reales y entraremos en pánico por ruido. Tres: los benchmarks de marketing de compiladores y runtimes (Bun vs Node, Zig vs C…) deben leerse con este filtro. El rendimiento, a este nivel, depende tanto de la ingeniería de compilación como del algoritmo.
Artículo producido por inteligencia artificial, revisado bajo control editorial humano.
Inicia sesión para unirte a la conversación.
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 ?