El banco medía el ciclo COMPLETO del proceso (arrancar → renderizar → capturar → salir) y nunca se midió cuánto de eso era arranque. Con una página vacía como control, y las 4 cargas × 2 variantes en UNA sola sesión intercalada (restar entre corridas de días distintos no vale: la misma variante deriva ~1%): maquetación trabajo 7281 → 4744 ms -34,8% (publicado: -10,9%) carga ajena trabajo 4550 → 4634 ms +1,8% = cero, y es buena señal SunSpider trabajo -34 → -6 ms bajo el ruido Dos correcciones al documento: 1. El -10,9% es correcto para el ciclo completo pero se leía como 'firefox 11% más rápido'. Sobre el trabajo de la página el PGO rinde -34,8%: tres veces más. El error subestimaba el propio resultado. 2. La explicación que di del SunSpider era aire. Su trabajo mide -34 ms, NEGATIVO: la página con el benchmark tardó menos que la vacía. No había nada que medir, y yo le colgué encima una teoría sobre el JIT. La teoría puede ser cierta; esta medición nunca la probó. Las tablas viejas se dejan sin retocar, con un aviso arriba: el error de método enseña más que el número corregido. Todo el rigor estadístico estaba puesto sobre una cantidad que no era la que yo creía medir, y ninguna repetición lo habría revelado — sólo un control, que costó siete corridas de una página vacía. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
21 lines
1.1 KiB
HTML
21 lines
1.1 KiB
HTML
<!doctype html><meta charset="utf-8"><title>bench</title>
|
|
<style>td{border:1px solid #ccc;padding:2px}.h{background:#eef}</style>
|
|
<div id="out"></div>
|
|
<script>
|
|
// Determinista a propósito: sin Math.random ni Date, para que dos corridas hagan LO MISMO.
|
|
// Mezcla DOM + layout + string + sort, que es lo que hace una página real y NO es lo que
|
|
// entrena SunSpider (aritmética pura en bucles).
|
|
function lcg(s){return function(){s=(s*1103515245+12345)&0x7fffffff;return s/0x7fffffff}}
|
|
var r=lcg(42), filas=[], N=1200;
|
|
for(var i=0;i<N;i++) filas.push({a:(r()*1e6)|0, b:"fila-"+i+"-"+((r()*1e9)|0).toString(36), c:r()});
|
|
filas.sort(function(x,y){return x.b<y.b?-1:x.b>y.b?1:0});
|
|
var h=["<table>"];
|
|
for(var i=0;i<N;i++){var f=filas[i];
|
|
h.push("<tr class='"+(i%2?"h":"")+"'><td>"+f.a+"</td><td>"+f.b+"</td><td>"+f.c.toFixed(6)+"</td></tr>");}
|
|
h.push("</table>");
|
|
document.getElementById("out").innerHTML=h.join("");
|
|
// fuerza layout de verdad, no sólo parse
|
|
var t=0; for(var i=0;i<200;i++){ t+=document.body.getBoundingClientRect().height; document.body.style.zoom=(1+i%3*0.0001); }
|
|
document.title="listo-"+(t|0);
|
|
</script>
|