Files
takana/scripts/diagnostico/fuera-del-corpus.html
T
SergioandClaude Opus 5 8ff6ae7b3a pgo: el control que faltaba — el arranque eran 16 s y diluía todos los porcentajes
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
2026-09-08 14:57:26 +00:00

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>