variantes-cpu T5 MEDIDO: zstd cortado (dispatch runtime, v3/v4=ruido con i7); zlib inconcluso pero la respuesta es zlib-ng; la lista caliente se concentra en mesa/códecs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 23:09:50 -04:00
co-authored by Claude Fable 5
parent 9c4ef8561c
commit 7f310005ea
+16 -3
View File
@@ -59,9 +59,22 @@ puñado de libs con kernels vectorizables. Lista caliente inicial (todas ya en e
| códecs (ffmpeg-clase, cuando entren) | el caso clásico AVX2 | | códecs (ffmpeg-clase, cuando entren) | el caso clásico AVX2 |
| `pixman`, `cairo` | raster 2D — **frontera GUI: sólo en worker** (gotcha zig-skew) | | `pixman`, `cairo` | raster 2D — **frontera GUI: sólo en worker** (gotcha zig-skew) |
- **T5 — piloto medido**: v3 de `zlib` + `zstd`, benchmark antes/después con carga real de - **T5 — piloto medido (2026-07-17, laptop TigerLake, clang 3 variantes base/v3/v4,
hammer (pack/hydrate de N artefactos). Si la ganancia no es medible ahí, la lista se corta corpus 200MB mixto fuente+binarios):**
temprano y barato. - **zstd: v3/v4 NO pagan — CORTADO de la lista.** Bench interno (`-b3 -i7`, estable):
base 144.2 vs v4 146.5 MB/s comprimiendo, 702 vs 692 descomprimiendo = ruido. Causa
conocida: zstd ya hace dispatch BMI2/AVX2 en **runtime** ⇒ el `-march` del build casi no
toca los kernels calientes. (Un +24% aparente de v4 en la 1ª tanda desapareció con i7:
era calentamiento — lección para T6: sólo benchs con control de varianza.)
- **zlib (madler): INCONCLUSO en laptop con carga** (el mismo binario base osciló 112157
MB/s entre tandas). Pero la pregunta estaba mal hecha: la respuesta buena no es una
variante v3 de zlib sino **zlib-ng** (fork con SIMD y dispatch en runtime, drop-in ABI;
Fedora 40 ya lo adoptó como zlib del sistema) ⇒ un solo artefacto, cero maquinaria de
variantes. Candidato a receta; medir zlib-ng vs zlib en máquina quieta cuando toque.
- **Consecuencia estructural**: los compresores modernos ya resuelven esto con dispatch
interno ⇒ la lista caliente de variantes se concentra donde NO hay dispatch: **mesa**
(llvmpipe/ACO compilan según -march) y códecs sin runtime-detect. El mecanismo T1T4
sigue válido pero su primer cliente real es mesa, no la dupla zlib/zstd.
- **T6 — regla de admisión**: una lib entra a la lista caliente con benchmark que lo - **T6 — regla de admisión**: una lib entra a la lista caliente con benchmark que lo
justifique, no por vibras. La lista vive en el repo junto a los números. justifique, no por vibras. La lista vive en el repo junto a los números.