Cinco clientes, hardware y proveedores idénticos, ejecuciones intercaladas para que la deriva del proveedor se cancele. La métrica es el tiempo hasta un archivo usable - descargado, verificado, extraído - medido junto al disco, el espacio libre y la memoria que el trabajo te cuesta. Cada tabla nombra las versiones contra las que corrió y el día en que corrió. Incluye los tramos que no ganamos.
En esta página
La versión corta · medido el 23 de agosto de 2026 en la línea de código que se publicó como nzbfast 1.2.2
Las rondas más recientes de esta página corrieron el 23 y el 24 de agosto de 2026 - la más reciente de ellas sobre la propia versión publicada v1.2.2 - frente a las versiones actuales de otros cuatro clientes, en el mismo hardware, las mismas líneas y los mismos proveedores: dos formas de trabajo de 6,5 a 87 GB, y velocidades de línea de 250 Mbit a 10 GbE. En esas rondas, ningún cliente resultó más barato que nzbfast en procesador, memoria y disco a la vez: cada uno cuesta más en al menos dos de los tres, lo máximo que cualquiera de ellos ahorró en un solo eje fue de aproximadamente un 2 por ciento - un empate estadístico, dentro de la propia dispersión de ese cliente entre ejecuciones - y en disco todos ellos movieron al menos el doble de bytes para un resultado idéntico byte a byte. De fábrica, nzbfast también fue el que menos memoria ocupó de todos los clientes medidos, en todos los escenarios, por un margen de 2,0x a 4,5x sobre el rival más cercano.
¿Cuál eres tú?
La mayoría de los descargadores escriben tu descarga en el disco al menos dos veces: una mientras la descargan, y otra mientras la descomprimen. nzbfast hace todo el trabajo en una sola pasada, así que escribe aproximadamente la mitad de los bytes por trabajo, ocupa menos memoria mientras trabaja, y gasta menos segundos de procesador por GB. Eso es menos carga en la máquina mientras la usas y la mitad de las escrituras por trabajo en tus discos, para los mismos archivos idénticos byte a byte - y como cada byte cruza el disco aproximadamente una vez, tu disco solo tiene que seguir el ritmo de tu línea una vez.
nzbfast no gana todas las tablas de esta página, y las que pierde están bajo los tramos que no ganamos - incluido uno de esta misma ronda. Lo que se mantuvo en todas las rondas que medimos es la factura combinada.
Primero la metodología
pipelining_requests=8
(de fábrica trae 1, es decir, sin pipelining, y el ajuste vale porcentajes de dos
dígitos en trabajos grandes), a NZBGet se le puso ArticleCache/DirectWrite/DirectUnpack/ParQuick,
a rustnzb su configuración documentada. Desde el 20 de agosto de 2026 cada ronda enfrenta
cinco proveedores en lugar de seis - el número de proveedores no es una palanca de
rendimiento en estas máquinas, donde un solo proveedor ya puede alcanzar el techo de la
línea, y un conjunto fijo mantiene las rondas comparables - así que una cifra con seis
proveedores en esta página no es directamente comparable con una más nueva de cinco
proveedores, y cada tabla indica cuál corrió.La ronda del 23 de agosto de 2026
Seis brazos en una máquina Apple Silicon de 20 núcleos con una línea de 1 Gbit: nzbfast con la configuración de fábrica, el mismo binario con su gobernador de conexiones desactivado, y las versiones actuales de los otros cuatro clientes. Cinco proveedores, TLS en todas partes, tres repeticiones por cliente y por escenario con el orden rotado dentro de cada ronda, y la salida de cada tramo comprobada byte a byte: 36 de 36 tramos produjeron la carga útil exacta. A 1 Gbit la línea marca el ritmo y los tiempos de finalización convergen por diseño, así que la columna de tiempo está ahí para mostrar esa convergencia; las columnas de recursos son lo que la ronda existe para medir.
Hay un ajuste que importa y se declara en vez de esconderse: la configuración de fábrica ahora incluye un gobernador de conexiones consciente de la línea, y en esta línea mantuvo 25 conexiones mientras que todos los demás clientes corrieron sus cientos configurados. La fila «gobernador desactivado» marca los mismos 360 sockets que usaban nuestras rondas anteriores, así que las dos comparaciones siguen disponibles: el producto tal como lo recibe un lector, y el experimento histórico.
| Lanzamiento con nombre de 6,5 GB, extracción en el camino | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) | cable (GB) |
|---|---|---|---|---|---|
| nzbfast, de fábrica (25 conexiones) | 58 s | 143 MB | 35,7 s | 6,2 | 6,5 |
| nzbfast, gobernador desactivado (360) | 60 s | 583 MB | 38,0 s | 6,1 | 6,6 |
| NZBGet 26.3-testing | 61 s | 801 MB | 40,1 s | 12,5 | 6,5 |
| SABnzbd 5.1.1 | 63 s | 1.588 MB | 69,5 s | 13,8 | 6,5 |
| rustnzb 1.4.5 | 67 s | 628 MB | 61,9 s | 13,4 | 7,2 |
| Weaver 0.7.8 | 110 s | 531 MB | 34,9 s¹ | 12,5 | 6,5 |
| Lanzamiento ofuscado de 34 GB | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) | cable (GB) |
|---|---|---|---|---|---|
| nzbfast, de fábrica (25 conexiones) | 302 s | 191 MB | 194,0 s | 32,5 | 34,4 |
| nzbfast, gobernador desactivado (360) | 302 s | 465 MB | 205,4 s | 32,9 | 34,4 |
| NZBGet 26.3-testing | 306 s | 900 MB | 221,3 s | 68,1 | 34,4 |
| SABnzbd 5.1.1 | 308 s | 1.607 MB | 356,5 s | 72,5 | 34,4 |
| rustnzb 1.4.5 | 343 s | 445 MB | 332,6 s | 69,8 | 37,8 |
| Weaver 0.7.8 | 511 s | 1.076 MB | 373,8 s | 98,0 | 34,4 |
Medido el 23 de agosto de 2026 contra SABnzbd 5.1.1, NZBGet 26.3-testing, rustnzb 1.4.5 y Weaver 0.7.8, medianas de tres con cada tramo verificado byte a byte, cinco proveedores, todo con TLS. Los brazos de nzbfast corrieron con una compilación de la misma línea de código de ese mismo día, unas siete horas antes de la compilación de publicación v1.2.2, así que sus filas no llevan número de versión; las tablas de 500 Mbit y 87 GB de esta página sí corrieron la compilación de publicación y lo dicen. ¹ La mediana de CPU de Weaver en el escenario de 6,5 GB es un 2% menor que la nuestra (34,9 frente a 35,7), con sus propios tres tramos entre 34,1 y 56,1 s, así que léelo como un empate estadístico; es la única celda de cualquiera de las dos tablas que se lleva un rival, y se repite bajo los tramos que no ganamos. En el escenario de 34 GB nuestro CPU es el más bajo sin discusión. La versión más nueva de Weaver, la 0.8.3, no publica binario; nuestra compilación desde el código fuente midió un patrón de procesador que no podemos atribuir con limpieza a la versión en vez de a la compilación, así que esta tabla enfrenta el activo de publicación 0.7.8, probado por hash, y lo declara así en vez de publicar una cifra confundida. rustnzb 1.4.5 completó aquí todos los tramos, escenario ofuscado incluido.
La columna de cable, con precisión. 6,5 GB en el escenario limpio - la misma cifra que NZBGet y SABnzbd declaran para sí mismos. El peor caso que conocemos es una publicación ofuscada renumerada deliberadamente, donde esquivar la numeración revuelta cuesta un artículo extra por cada esquive: medido en 1,10-1,20x el plan mínimo en las dos formas de este tipo que pudimos construir. Las celdas de 7,2 y 37,8 GB de rustnzb son exceso propio suyo, con una advertencia en su registro en dos tramos.
Qué significa la columna de memoria con la configuración de fábrica: el gobernador es la mayor razón por la que la fila de fábrica se queda en 143-191 MB - menos conexiones es menos en vuelo a la vez - y desactivarlo (la segunda fila) es el puente honesto hacia todas las tablas más antiguas de 360 sockets de esta página. Incluso a 360 sockets estamos a la par del rival más ligero (583 MB frente a los 628 de rustnzb en el escenario pequeño, 465 frente a sus 445 en el grande); con la configuración de fábrica ya no queda ningún empate.
Líneas más lentas · medido el 24 de agosto de 2026 en nzbfast 1.2.2
Con una línea suficientemente lenta, el tiempo de finalización de cada cliente es el cable y nada más, así que una línea lenta esconde muchos pecados. Lo que no puede esconder es lo que cada cliente quema para llenarla. Configuramos el banco de 1 Gbit a dos velocidades que corresponden a planes reales y enfrentamos los seis brazos en cada una - la misma máquina, los mismos cinco proveedores, tres repeticiones por cliente con el orden rotado, cada tramo verificado byte a byte, 36 de 36 correctos en las dos rondas. El brazo de nzbfast a 500 Mbit es la propia versión publicada v1.2.2.
| Línea de 500 Mbit, lanzamiento de 6,5 GB | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) |
|---|---|---|---|---|
| nzbfast 1.2.2, de fábrica | 109 s | 142 MB | 45,4 s | 6,2 |
| nzbfast 1.2.2, gobernador desactivado | 115 s | 592 MB | 59,0 s | 6,2 |
| SABnzbd 5.1.1 | 125 s | 1.665 MB | 99,2 s | 14,2 |
| rustnzb 1.4.5 | 131 s | 626 MB | 92,6 s | 14,5 |
| Weaver 0.7.8 | 138 s | 564 MB | 48,5 s | 12,4 |
| NZBGet 26.3-testing | 145 s¹ | 846 MB | 64,3 s | 13,2 |
| Línea de 250 Mbit, el mismo lanzamiento | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) |
|---|---|---|---|---|
| nzbfast, de fábrica | 217 s | 144 MB | 53,3 s | 6,2 |
| nzbfast, gobernador desactivado | 219 s | 651 MB | 67,9 s | 6,2 |
| NZBGet 26.3-testing | 227 s | 826 MB | 78,4 s | 13,3 |
| SABnzbd 5.1.1 | 230 s | 1.667 MB | 162,4 s | 15,2 |
| Weaver 0.7.8 | 230 s | 789 MB | 62,0 s | 12,9 |
| rustnzb 1.4.5 | 256 s | 644 MB | 122,4 s | 15,4 |
Lee las dos tablas como un gradiente. A 250 Mbit todo el campo cae dentro de un 18% en el reloj y le llevamos al rival más cercano una ventaja del 4,4%; a 500 Mbit la brecha se abre al 14,7%; a las velocidades de gigabit y 10 GbE de las tablas de arriba y abajo se abre todavía más. Las diferencias de velocidad crecen con la línea. Las columnas de recursos no esperan a una línea rápida: a cada velocidad medida, cada rival ocupó al menos 3,9x la memoria, gastó más procesador, y movió aproximadamente el doble de bytes de disco para el mismo archivo idéntico byte a byte.
El gobernador de conexiones se gana el sustento en líneas lentas, y el propio contador de descartes del conformador dice por qué. La configuración de fábrica mantuvo 25 conexiones donde cada rival corrió cientos; el mismo binario con el gobernador desactivado corrió con 360. Menos flujos por una cola fija significa menos pérdida y menos reenvío: el conformador registró unos 4.200 descartes por tramo con tope frente a unos 155.000 sin tope a 500 Mbit, y el brazo con tope fue más rápido, 4,2x más ligero en memoria y 1,3x más ligero en CPU que nuestra propia postura de 360 sockets. Más conexiones no es más velocidad; por debajo de un gigabit es mediblemente lo contrario.
Medido el 24 de agosto de 2026, medianas de tres, en una máquina Apple Silicon de 20 núcleos con su línea conformada a cada velocidad (la velocidad conformada verificada por una sonda independiente antes de cada ronda: 248 y 496 Mbit). El brazo de nzbfast a 500 Mbit es la versión de la etiqueta de publicación v1.2.2; la ronda de 250 Mbit corrió horas antes sobre la misma línea de código. Los recuentos de bytes en una línea conformada se leen del propio contador de cada cliente, nunca de la interfaz de red (el conformador descarta y TCP reenvía, así que la interfaz cuenta las dos copias). Los tiempos totales son comparables dentro de cada tabla, no entre rondas conformadas de forma distinta. ¹ Los tres tramos de NZBGet a 500 Mbit fueron de 114 a 158 s con lecturas de recursos planas - una dispersión genuina, así que se cita la mediana y se declara la dispersión en vez de acotarla.
El archivo grande · medido el 24 de agosto de 2026 en nzbfast 1.2.2
El otro extremo de la historia de la velocidad de línea: una máquina de 10 GbE, cinco proveedores, una publicación de 87 GB cuya carga útil es un único vídeo de 76,6 GB, seis brazos, tres repeticiones rotadas, y la salida de cada tramo verificada byte a byte - 18 de 18 tramos produjeron el archivo idéntico, los seis clientes de acuerdo en su suma de comprobación. Los brazos de nzbfast son la versión publicada v1.2.2.
| Publicación de 87 GB, 10 GbE | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) | cable (GB) |
|---|---|---|---|---|---|
| nzbfast 1.2.2 (50 conexiones)¹ | 70 s | 415 MB | 144 s | 72,9 | 77,2 |
| nzbfast 1.2.2, gobernador de conexiones activado (25) | 90 s | 336 MB | 130,5 s | 72,9 | 77,4 |
| NZBGet 26.3-testing | 93 s | 1.195 MB | 443 s | 183,7 | 77,2 |
| SABnzbd 5.1.1 | 113 s | 1.910 MB | 234 s | 235,1 | 77,2 |
| Weaver 0.7.8 | 645 s | 1.825 MB | 631 s | 435,1² | 77,3 |
| rustnzb 1.4.5 | 869 s³ | 681 MB | 2.444 s | 216,1 | 86,9 |
La historia del disco a su mayor escala hasta ahora. Nuestro disco pico durante el trabajo es de 70,8 GiB - POR DEBAJO de la salida de 76,6 GB, porque la cola de la carga útil todavía está llegando mientras la cabeza ya es final - y la E/S de disco total es 1,00x la carga útil. Los rivales mueven de 2,5x a 6,0x los bytes para el mismo archivo. Y el brazo más rápido sostiene unos 8,7 Gbps incluyendo la verificación y la extracción en flujo; en el momento en que se llena la barra de descarga, el archivo está terminado.
¹ Cada cliente de esta página se enfrenta con su mejor configuración documentada, y en una línea de 10 GbE la nuestra es 50 conexiones en total - 10 por servidor, un ajuste que cualquier nivel de cuenta alcanza - el mismo ajuste único que le damos a cada rival (a SABnzbd su pipelining, a NZBGet su caché de artículos). Cincuenta no es una desventaja: un barrido de seis escalones sobre este mismo escenario encontró el mismo techo desde 50 conexiones hasta el máximo de cuenta de 360, mientras el coste de procesador sube 2,3x en ese rango sin ganar nada, así que los máximos no compran nada que esta tabla fuera a mostrar. La fila de 50 conexiones se volvió a medir después con la calidad completa de tres repeticiones el mismo día, en la misma máquina, contra la misma suma de comprobación de salida: 70 / 70 / 70 s, las tres verificadas byte a byte. La fila del gobernador está aquí porque es la más interesante: a cada velocidad hasta un gigabit sus 25 conexiones son gratis-o-más-rápidas, e incluso aquí, donde cuestan aproximadamente una quinta parte del tiempo total, compran 336 frente a 415 MB de memoria y 130 frente a 144 segundos de CPU. Escalar el gobernador con la velocidad de línea automáticamente - de modo que el mejor comportamiento sea también el predeterminado, en el codo en vez de en el máximo - está en cola para la próxima versión. ² Los 435 GiB de E/S de disco de Weaver para una descarga de 77 GB son su almacén cifrado en reposo releyendo y reescribiendo casi todo a medida que el trabajo crece - el patrón superlineal que midieron nuestras rondas instrumentadas de julio, todavía presente en la versión actual. ³ rustnzb 1.4.5 completa correcto byte a byte y su coste está en tiempo de procesador y cable: unos 2.444 segundos de CPU frente a un reloj de 869 s en las tres repeticiones, y 86,9 GB descargados donde el plan óptimo es 77,2 (obtiene el juego de recuperación completo incondicionalmente). Medido el 24 de agosto de 2026, medianas de tres, todas las versiones actuales; la repetición 3 de los tres brazos más rápidos corrió ~40 minutos después del resto (un guardián de espacio libre pausó la ronda; el desplazamiento no movió ninguna mediana más de lo que ya lo hace la dispersión entre repeticiones).
Desde esta ronda, la fila del regulador queda superada por lo que trae la 1.2.3. Medida el 26 de agosto de 2026 en el mismo escenario, la misma máquina y la misma línea de 10 GbE, seis tramos correctos byte a byte contra la suma de comprobación de esta tabla: 71 s con los ajustes de fábrica, 322 MB y 139,3 segundos de procesador, frente a los 90 s de arriba. Fue una ronda solo de nzbfast sobre una compilación posterior, así que se enuncia aquí en vez de correrse en la tabla: cada fila de arriba se mantiene como se midió el 24 de agosto.
El primer cliente comercial de esta página: Newsbin Pro, el cliente de pago para Windows más longevo, enfrentado contra nuestra versión oficial para Windows en una máquina Windows nativa de 10 GbE cuyo disco de sistema TLC sostiene 0,99 GB/s de escritura - el disco más lento de nuestra flota de pruebas, lo que la convierte en el lugar honesto para enfrentar a un cliente de dos pasadas. La misma publicación de 87 GB, tres repeticiones intercaladas, la salida de cada tramo verificada byte a byte contra la misma suma de comprobación que la tabla de arriba: 6 de 6 idénticos.
| Publicación de 87 GB, Windows, disco TLC | tiempo hasta archivo usable | memoria máxima (RSS) | tiempo de CPU | E/S de disco (GiB) | cable (GB) |
|---|---|---|---|---|---|
| nzbfast 1.2.2 (50 conexiones) | 105 s | 469 MB | 154 s | 84,5 | 76,7 |
| Newsbin Pro 6.90 (360 conexiones) | 477 s | 881 MB | 1.862 s | 154,1 | 76,7 |
Medido el 24 de agosto de 2026, medianas de tres, ambos clientes en su versión actual. Newsbin corrió con su propio máximo de conexiones por servidor configurado - 360 sockets contra nuestras 50 - y sus tiempos excluyen los 90 segundos de asentamiento que nuestro arnés espera antes de declarar terminado a un cliente vigilado, así que la comparación se inclina a su favor dos veces y el resultado se mantiene de todos modos: 4,5x el tiempo total, 12x los segundos de CPU, y 1,9x la memoria para el archivo idéntico. Ninguno de los dos lados está limitado por el disco aquí - el brazo de una pasada necesita unos 0,73 GB/s de los 0,99 del disco, y Newsbin promedia un tercio de eso mientras mantiene ocupados casi cuatro núcleos de procesador durante ocho minutos - así que la brecha es el cliente, no el hardware. Ambos clientes descargaron los mismos bytes de cable para la carga útil. Newsbin es una marca registrada de CMCE, Inc.; el cliente lo publica DJI Interprises, LLC.
El censo
Reponderado en agosto de 2026 sobre una población mucho más grande. El censo de julio de más abajo leyó dos grupos; el índice que hay detrás ahora contiene 13,2 millones de lanzamientos y 174,7 TB en 114 grupos, y la mezcla se movió - los archivos 7z crecieron de menos del 2% de los bytes a una parte importante. Vuelto a medir sobre esa población, alrededor del 95% de los bytes de los lanzamientos completos pasa por una sola pasada (del 94,3% al 96,3% según cuatro formas de cortar la población), y el calificador que de verdad importa no es la forma del archivo sino la contraseña: alrededor de un tercio de los bytes necesita una para producir salida siquiera, sea cual sea el cliente que ejecutes. La instantánea de julio se queda más abajo, como la instantánea que es.
Para el censo de julio miramos 890.852 lanzamientos, 1,6 millones de archivos y 79,6 TB en los dos grupos de películas y series más concurridos, y luego descargamos y leímos las cabeceras de archivo de mil publicaciones reales para confirmar lo que los nombres de archivo solo insinuaban. Contado por bytes en vez de por publicación, porque un millón de archivos diminutos importa menos que uno grande.
Eso replanteó en qué trabajamos. Tiene poco sentido afinar una vía de compresión que carga el 1,4% de los datos, así que afinamos las dos que cargan el resto.
El cifrado tampoco se reparte de manera uniforme. Escala con el tamaño:
| Tamaño del lanzamiento | Parte de todos los datos | Almacenado | Cifrado |
|---|---|---|---|
| 1-5 GB | 29% | 94% | 2% |
| 5-20 GB | 39% | 97% | 2% |
| 20-60 GB | 20% | 67% | 33% |
| más de 60 GB | 12% | 51% | 49% |
Las descargas normales casi siempre son archivos almacenados sin más. Las grandes son un cara o cruz entre almacenado y cifrado. La forma almacenada es la que enfrenta cada tabla actual de esta página; la historia de disco de la forma cifrada se mide en su propia sección más abajo.
La publicación dañada · vuelta a correr el 24 de agosto de 2026, todas las versiones actuales
Los artículos expiran, los servidores los descartan en silencio, las subidas llegan incompletas - y el daño es donde la brecha entre clientes es más ancha, así que consigue su propia ronda con la versión más reciente de cada cliente, nzbfast v1.2.2 incluido: máquina «Europa» de 10 GbE, cinco proveedores, 100 conexiones por cliente, el mismo lanzamiento de 6,5 GB envenenado en tres niveles de daño, tres repeticiones por brazo con el orden alternado, cada tramo verificado byte a byte contra el archivo limpio. 63 de 65 tramos volvieron idénticos byte a byte; los dos que no lo hicieron se nombran más abajo, porque son resultados.
| tiempo hasta un archivo verificado y usable (media de 3) | 60 artículos muertos | 20 muertos | 5 muertos |
|---|---|---|---|
| nzbfast 1.2.2 | 13,0 s | 10,0 s | 8,7 s |
| nzbfast 1.2.2, reparación temprana desactivada | 29,3 s | 19,0 s | 12,3 s |
| NZBGet 26.3-testing | 33,0 s | 23,7 s | 23,0 s |
| SABnzbd 5.1.1 | 48,0 s¹ | 28,0 s | 24,3 s |
| rustnzb 1.4.5 | 107,3 s² | 51,3 s | 47,0 s |
| Weaver 0.7.8 | no terminó³ | no terminó³ | 194,0 s |
Por qué la publicación dañada es rápida aquí. Cuando falta un artículo, un cliente normalmente pregunta al siguiente servidor, y luego al siguiente, hasta que todos los servidores lo han rechazado - un recorrido en serie cuyos rechazos tardan entre decenas de milisegundos y un par de segundos cada uno, durante los cuales la descarga se queda en cero. nzbfast deja de preguntar: en cuanto los datos de paridad que ya tiene en la mano cubren lo que todavía falta, repara de inmediato en vez de terminar el recorrido. Esa es la segunda fila - el mismo binario con ese comportamiento desactivado es de 1,4x a 2,3x más lento según el daño - y la ronda verificó que el mecanismo se activó en cada tramo habilitado y nunca en uno deshabilitado. Contra el rival más cercano el margen es de 2,4x a 2,7x, sin solapamiento en ninguno de los nueve pares de repeticiones.
El disco es donde el margen es más ancho, y no es por el truco de reparación. Cada brazo que terminó produjo el mismo archivo de 6,48 GB; el nuestro movió 6,2-6,8 GB de E/S de disco haciéndolo, NZBGet 12,7-18,5 GB, SABnzbd 13,9-20,3 GB y rustnzb 12,8-13,1 GB. Eso es la tubería de una pasada - la fila desactivada mueve los mismos 6,2 GB - así que se mantiene tanto en publicaciones dañadas como en publicaciones sanas.
¹ Los tres tramos de SABnzbd con el daño más pesado fueron 43, 41 y 60 s - una dispersión genuina sobre entradas idénticas, así que se cita la media con el rango declarado. ² rustnzb 1.4.5 entregó cada tramo correcto byte a byte, y su coste está en tiempo de procesador y no en fiabilidad: unos 1.620 segundos de CPU frente a un reloj de 107 s con el daño más pesado - unos quince núcleos ocupados durante todo el tramo - donde la misma salida reparada nos cuesta a nosotros unos 50 segundos de CPU. ³ Weaver movió 1,5 GB y 4,9 GB de los 6,5 dentro de nuestro límite de 20 minutos en los dos niveles de daño más pesados - el mismo no-terminar en las tres rondas que lo han enfrentado, en tres noches distintas; el límite es nuestro y el no-terminar es el resultado. Con 5 artículos muertos completó correctamente las tres veces. Su coste de procesador ahí es su propia historia: unos 2.325 segundos de CPU para el tramo de 194 s, frente a nuestros 20.
Medido el 24 de agosto de 2026, todas las versiones actuales: nzbfast v1.2.2 (la propia etiqueta de publicación), NZBGet 26.3-testing (versión del 20 de agosto), SABnzbd 5.1.1, rustnzb 1.4.5, Weaver 0.7.8. Un brazo de continuidad enfrentó la versión de nzbfast de la noche anterior dentro de esta misma ronda y quedó a menos de un segundo de v1.2.2 en cada escenario, así que nada aquí depende de una noche con suerte; y las configuraciones de los rivales difieren de las de la ronda anterior solo en la ruta de la aplicación, comprobada clave por clave antes de que corriera la ronda.
La columna honesta
Esta sección existe para los tramos que gana un rival, y se vuelve a medir en cada ronda en vez de seleccionarse a mano: todo lo que perdemos va aquí, nombrado, junto a la tabla que lo muestra. En la versión actual, esta ronda, está vacía de pérdidas de velocidad - lo cual merece cautela más que satisfacción, así que las concesiones que quedan se declaran más abajo.
Lo que no ha desaparecido es la concesión detrás de esas cifras, así que eso es lo que dice esta sección ahora: gastamos más memoria que las herramientas independientes, y la vía rápida de reparación pesada es la que más gasta. Nuestro extractor y nuestro reparador están construidos para viajar junto a una descarga en vivo en vez de correr una vez desde una línea de comandos, y eso cuesta memoria residente; el detalle está junto a las tablas de componentes. Si tu restricción es la huella más pequeña posible para un trabajo de una sola vez, las herramientas dedicadas ganan esa columna y no vamos a fingir lo contrario.
Y la ronda del 23 de agosto de 2026 añade una entrada, que preferimos listar aquí antes que dejarla en una nota al pie: en el escenario de 6,5 GB, la mediana de procesador de Weaver es un 2% menor que la nuestra - 34,9 frente a 35,7 segundos de CPU, con sus propios tres tramos entre 34,1 y 56,1 s - así que lo llamamos empate estadístico, y aparece en la tabla de coste marcada como la única celda que no nos llevamos. En el escenario de 34 GB de la misma ronda nuestro CPU es el más bajo sin discusión.
Hazlo pasar hambre de RAM · medido el 24 de agosto de 2026 en nzbfast 1.2.2
El mismo trabajo de 87 GB de la ronda de arriba, vuelto a correr con presupuestos de memoria fijos de 2 GB, 1 GB y 256 MB - lo que el autoajuste elegiría en una máquina de 8 GB, una de 4 GB, y un NAS de 2 GB. Cada tramo produjo el archivo idéntico verificado byte a byte, y la columna de memoria siguió al presupuesto, nunca al trabajo:
| Trabajo de 87 GB, 10 GbE | auto | presupuesto de 2 GB | presupuesto de 1 GB | presupuesto de 256 MB |
|---|---|---|---|---|
| tiempo hasta archivo usable | 94 s | 87 s | 94 s | 102 s |
| memoria máxima (RSS) | 286 MB | 558 MB | 336 MB | 284 MB |
| E/S de disco (GiB) | 73,2 | 73,2 | 72,8 | 72,7 |
Un solo tramo por presupuesto sobre la versión publicada, comprobado contra la misma suma de comprobación de salida que la ronda de seis brazos. El presupuesto más ajustado cuesta alrededor de un 9% del tiempo total, y solo porque esta línea es 10 GbE - los bloques volcados a disco cuestan tiempo solo cuando la línea supera al disco, así que en una conexión doméstica típica un presupuesto pequeño sale casi gratis. Toda la escalera, descarga de 87 GB incluida, cabe en 0,3-0,6 GB de memoria; con la configuración de fábrica el trabajo corrió en 286 MB. Ningún otro cliente ofrece un presupuesto de memoria fijo para todo el proceso; lo más parecido son los ajustes de tamaño de caché, y la ronda de abajo mide lo que esos cuestan.
El tope enfrentado contra los propios ajustes del campo. En el escenario de 34 GB (23 de agosto de 2026, máquina de 1 Gbit, cinco proveedores, 30 de 30 tramos correctos byte a byte), imponerle a NZBGet un tope de caché equivalente más que dupli su CPU (de 215,5 a 453,0 segundos de CPU, 2,10x) para comprar un recorte del 52% en su memoria máxima, y el tope de SABnzbd fue casi gratis pero solo alcanzó parte de su huella. El ajuste de caché de rustnzb era decorativo en la versión enfrentada, y Weaver no tiene ningún ajuste de memoria, así que los dos corrieron sin tope como columnas de referencia en vez de puntuarse con un presupuesto que no pueden sostener. Nuestro propio lado de esa ronda queda superado por la escalera de v1.2.2 de arriba, que dice lo mismo a 2,5x el tamaño: el presupuesto nunca es la restricción vinculante, porque una pasada ya ocupa muy poco de entrada.
Espacio libre · medido al megabyte
Un cliente de escritura-y-luego-extracción necesita espacio para los volúmenes del archivo y para la carga útil descomprimida a la vez, así que un trabajo no arrancará sin tener libre aproximadamente el doble de la descarga. Una pasada solo necesita la carga útil - y esta ronda midió cuánto más, encogiendo el volumen de destino hasta que cada cliente fallaba. La respuesta de nzbfast es una constante de unos 50 MB de margen, no una proporción, y se mantiene desde un trabajo de 6,5 GB hasta uno de 34 GB.
| espacio libre que necesita el trabajo | trabajo de 6,5 GB | trabajo de 34 GB |
|---|---|---|
| nzbfast 1.2.2 | la salida + 48,6 MB | la salida + 51,0 MB |
| NZBGet 26.3-testing | ~2.1x la carga útil | ~2.1x (37,6 GB por encima de la salida) |
| SABnzbd 5.1.1 | ~2.1x la carga útil | ~2.1x (37,6 GB por encima de la salida) |
| rustnzb 1.4.5 | ~2.25x la carga útil | ~2.25x (42,7 GB por encima de la salida) |
| Weaver 0.7.8 | ~2.25x la carga útil | ~2.25x (42,7 GB por encima de la salida)¹ |
Medido en una máquina Apple Silicon de 20 núcleos, línea de 1 Gbit, cinco proveedores, tres repeticiones en cada límite, cada tramo completado verificado byte a byte - las filas de los rivales del 22-23 de agosto de 2026 (celda de 34 GB de Weaver repetida el 24 de agosto, nota 1), y la fila de nzbfast vuelta a cortar sobre la v1.2.2 el 24 de agosto, que reprodujo los dos límites con exactitud, 12 de 12 tramos unánimes en los dos escenarios. Nuestras celdas son un mínimo medido: el trabajo se completa 3 de 3 con 48,6 MB y 51,0 MB de margen, y se niega 3 de 3 unos 17 MB por debajo de eso - así que el mínimo es real en las dos direcciones. Lo que el trabajo realmente ocupa se asienta en la salida más unos 3 MB; el margen paga los últimos momentos de la tubería, nunca una segunda copia. Las celdas de los rivales son su mínimo medido en el trabajo de 6,5 GB y una suficiencia confirmada con la misma proporción en el de 34 GB (3 de 3 correctos byte a byte exactamente con esa proporción); no bajamos más su escalera en el tamaño mayor, así que su verdadero mínimo ahí puede estar algo por debajo de la proporción, y lo decimos así en vez de redondear a nuestro favor.
Lo que se ve al quedarse sin espacio importa tanto como el número. A 17 MB por debajo de su mínimo, nzbfast choca con el rechazo del disco al escribir, se detiene limpiamente con «sin espacio en disco», mantiene registrado todo lo que ya había llegado, y un reintento retoma sin volver a descargar - un parcial que conservas, no un trabajo fallido. ¹ La celda del escenario grande de Weaver quedó resuelta por una repetición el 24 de agosto: tres de tres tramos correctos byte a byte con el mismo ~2,25x, cada uno más rápido que el tramo bueno del primer intento, con el espacio libre idéntico hasta el byte. En el primer intento, el 23 de agosto, dos de sus tres tramos se habían atascado a velocidades de un solo dígito en MB/s con más de 60 GB todavía libres y chocaron con el límite de 40 minutos de la ronda. Esos atascos no volvieron, y la instrumentación de atascos del banco estuvo desplegada y en silencio en los tres tramos de la repetición, lo que es una medida positiva y no una ausencia de medida. Qué los causó sigue sin saberse, y una repetición limpia no es un diagnóstico: ahora hay seis tramos con esa proporción, cuatro completados, y los dos fallos vienen de una sola ventana de 80 minutos la primera noche.
La consecuencia del multiplicador
Para cualquier disco, la velocidad de línea que puedes sostener durante la descarga, la verificación y la descompresión es la velocidad real del disco dividida entre el multiplicador de E/S del cliente. Las tablas de coste de arriba miden el nuestro en aproximadamente 1,0x - cada byte cruza el disco aproximadamente una vez - y cada rival entre 2,0x y 3,0x para una salida idéntica byte a byte. Así que el mismo disco sostiene de dos a tres veces la velocidad de línea con nzbfast que con un cliente de dos pasadas. La aritmética, con los multiplicadores tomados de las tablas medidas de arriba:
| línea | velocidad de la carga útil | disco necesario a nuestro ~1.0x | a 2,2x | a 3,0x |
|---|---|---|---|---|
| 100 Mbit | 12,5 MB/s | ~13 MB/s | ~28 MB/s | ~38 MB/s |
| 1 Gbit | 125 MB/s | ~130 MB/s | ~275 MB/s | ~375 MB/s |
| 5 Gbit | 625 MB/s | ~650 MB/s | ~1.400 MB/s | ~1.900 MB/s |
| 10 Gbit | 1,25 GB/s | ~1,3 GB/s | ~2,75 GB/s | ~3,75 GB/s |
Pon esas columnas frente a lo que los discos realmente sostienen. Un disco NAS de 5400/5900 rpm sostiene aproximadamente 100-140 MB/s en sus pistas exteriores, decayendo hacia 80-100 a medida que se llena - así que un gigabit ya está al límite a 1,0x en la clase más lenta, cosa que decimos con claridad, y fuera de alcance a 2-3x. Un disco de 7200 rpm sostiene aproximadamente 160-220 MB/s. Los ~550 MB/s de un SSD SATA limitan a un cliente de 2,2x cerca de 2 Gbit y aguantan unos 3,5-4 Gbit a 1,0x. Los discos SMR, vendidos en bahías de NAS durante años, son el peor caso específicamente para el patrón de dos pasadas: la escritura sostenida con relectura puede desplomarse a decenas de MB/s en cuanto se agota el caché de reescritura por bandas del disco. Y una línea multi-gigabit es el mismo muro más arriba: 10 Gbit con un multiplicador de 2-3x exige 2,75-3,75 GB/s sostenidos, por encima de todos los discos SATA y de muchos discos NVMe en cuanto un trabajo grande supera su zona de caché rápido, mientras que a 1,0x un SSD de ~2 GB/s sigue el ritmo de la velocidad de línea con margen de sobra.
Medido, no afirmado, sobre un disco limitado. Limitamos un disco a 150 MB/s - una velocidad de la clase 5400 rpm - y corrimos la misma descarga dos veces: una en una pasada, otra siguiendo la escritura, relectura y descompresión del patrón de dos pasadas. El brazo de una pasada siguió el ritmo de la línea de 1 Gbit a 109,9 MB/s, un 0,2% por debajo de su propia velocidad sin límite; el patrón de dos pasadas cayó a 59,0 MB/s, el 54% de la línea. Barrido paramétricamente sin límite de línea, el brazo de una pasada tomó el 97% de lo que el disco ofrecía en cada límite (290,7 MB/s de un límite de 300 MB/s, 145,6 de 150) con una E/S de disco medida de 1,00-1,03x, y el patrón de dos pasadas tomó el 47-48% con una E/S medida de 3,02x - la proporción constante a través de los límites, que es la aritmética de arriba reproducida como medición. 32 tramos, cada salida verificada byte a byte.
Y una vez sobre hardware real, sin limitar. El disco más lento de nuestra flota de pruebas es un disco de sistema TLC en una máquina Windows nativa de 10 GbE, que sostiene 0,99 GB/s de escritura donde nuestra máquina de pruebas más rápida sostiene 5,97. La ronda de Windows de 87 GB de arriba corrió sobre él: el brazo de una pasada necesitó unos 0,73 GB/s de esos 0,99 para sostener 105 s de tiempo total - margen de sobra en el peor disco de la flota - que es la celda superior derecha de la tabla de arriba aterrizando sobre un disco real en vez de uno limitado. Y el extremo rápido de la flota cierra el argumento desde el otro lado: el mismo trabajo de 87 GB, a máxima velocidad en 10 GbE, termina en los mismos 70-71 segundos sobre un disco de 1,24 GB/s y sobre uno de 5,97 GB/s - un disco 4,8x más rápido no mueve el tiempo total nada, porque con un multiplicador de 1,0x la línea se agota mucho antes que el disco. Para un cliente de dos pasadas, esos dos discos son mundos distintos.
Qué es y qué no es ese banco de pruebas. El disco se limitó con un controlador de E/S del sistema operativo dentro de una máquina virtual en una máquina Apple Silicon de 32 núcleos, y el brazo de dos pasadas es nuestro propio binario hecho para escribir, releer y reescribir como lo hace un cliente de dos pasadas. Ningún rival corrió en él - la línea simulada del banco sirve archivos planos que un rival también manejaría en una pasada, así que apuntar uno a él no demostraría nada - lo que significa que la tabla de arriba es aritmética anclada en un par medido, con los multiplicadores de los rivales tomados de las tablas reales de cinco clientes de arriba, y lo etiquetamos así a propósito. Van con ella tres notas de honestidad. El controlador presupuesta lecturas y escrituras por separado, lo que favorece al brazo de dos pasadas; en un dispositivo con un solo presupuesto, que es todo disco giratorio, su parte sería todavía menor. El multiplicador de dos pasadas es de aproximadamente 2x cuando los volúmenes todavía están en el caché de páginas al releer y de 3x cuando no lo están, así que un trabajo grande en una máquina normal se sitúa en el extremo de 3x. Y el coste de posicionamiento de escribir, releer y borrar cientos de archivos de volumen - frente a un archivo escrito una vez en orden - es un argumento a partir de la forma del tráfico, todavía no una medición: necesita un disco giratorio, y lo citamos como argumento hasta que lo tenga.
Forma dos · el cara o cruz de los lanzamientos grandes
La mitad de todo lo publicado por encima de 60 GB es un archivo cifrado, y es la forma donde los clientes de dos pasadas pagan más: los datos bloqueados hay que escribirlos, releerlos, desbloquearlos y volver a escribirlos. nzbfast desbloquea cada trozo a medida que llega, así que los datos bloqueados nunca llegan a tocar el disco. Medido sobre un lanzamiento cifrado real de 94 GB:
| Lanzamiento cifrado de 94 GB, una pasada | medido |
|---|---|
| Escrito en disco | 90,1 GB - aproximadamente la carga útil, una vez |
| Disco máximo usado a la vez | 89,6 GB - el propio archivo de salida |
| Pausa después de la descarga | 0,6 s |
El disco máximo usado a la vez es el tamaño del archivo que pediste. No hay ningún momento durante una descarga cifrada en que nzbfast necesite espacio para una segunda copia, ni una pasada de desbloqueo después de que se llena la barra de descarga - un cliente de dos pasadas paga aproximadamente el doble en las tres filas, que es el mismo 2x que las tablas de coste de arriba miden en cualquier otra forma.
Disco en uso durante una descarga, muestreado cada cinco segundos. La línea plana es nzbfast; la línea que sube a 166 GB al final es el patrón de escritura-y-desbloqueo, pagando por el archivo terminado mientras la copia bloqueada todavía está en el disco - medido corriendo los dos patrones sobre el mismo lanzamiento.
Publicaciones anidadas · medido el 28 de agosto de 2026
Buena parte de lo que se publica es deliberadamente difícil de abrir. El nombre real del archivo queda enterrado dentro de un segundo contenedor, a veces un tercero, a veces en un formato distinto en cada nivel, para que la publicación revele lo menos posible sobre lo que contiene. A eso se suma que las publicaciones llegan dañadas: los artículos caducan, las subidas llegan incompletas y hay que usar los datos de recuperación antes de poder extraer nada. Un cliente recorre esa cadena por usted, o le entrega una carpeta de archivos y se detiene.
Así que construimos diez formas que aíslan exactamente eso, enfrentamos a cada cliente actual con ellas y luego hicimos lo que las comparativas suelen omitir: donde un cliente se detuvo antes de tiempo, terminamos el trabajo a mano con las herramientas estándar y lo cronometramos también. Un cliente que se rinde rápido parece veloz hasta que se cuenta el trabajo que le deja a usted.
| diez formas empaquetadas y dañadas | terminado por sí solo | solo tras reparación manual | nunca llegó al archivo |
|---|---|---|---|
| NZBGet 26.3 | 2 de 10 | 8 | 0 |
| SABnzbd 5.1.2 | 5 de 10 | 3 | 2 |
| nzbfast 1.2.4 | 10 de 10 | 0 | 0 |
| rustnzb 1.4.5 | 7 de 10 | 1 | 2 |
| Weaver 0.7.8 | 1 de 10 | 1 | 8 |
nzbfast es el único que termina las diez sin ayuda. NZBGet también llega al archivo en todas las formas, pero necesita 16 rondas de reparación y extracción manuales en ocho de ellas. SABnzbd termina cinco sin ayuda y dos resultan inalcanzables incluso a mano. Weaver llega al archivo en dos.
El patrón no es casual. Las formas que nzbfast recorre y las demás no son las empaquetadas y las dañadas: un contenedor dentro de otro, un cambio de formato a mitad de camino, una cadena de cinco niveles y, sobre todo, un contenedor que llega corrupto con sus propios datos de recuperación al lado. En esta última, cuatro clientes extraen el conjunto exterior perfectamente, le entregan el contenedor defectuoso junto con el conjunto de recuperación que lo arreglaría, y se detienen.
Donde los clientes realizan el mismo trabajo, la diferencia no es pequeña. Estas son las siete formas que alcanzan los cuatro clientes principales, contando la reparación manual que necesitó cada uno:
| las siete formas que alcanzan los cuatro | tiempo hasta un archivo utilizable | escrito en disco |
|---|---|---|
| NZBGet 26.3 | 51,2 s | 29,83 GB |
| SABnzbd 5.1.2 | 52,3 s | 32,27 GB |
| nzbfast 1.2.4 | 10,3 s | 11,68 GB |
| rustnzb 1.4.5 | 41,8 s | 27,75 GB |
De cuatro a cinco veces más rápido, con menos de la mitad de los bytes escritos. La cifra de disco es la que sigue importando después de la descarga: cada gigabyte de esa columna es un gigabyte que su unidad tuvo que absorber, y los clientes que usan una zona intermedia escriben el contenido, lo vuelven a leer y lo escriben otra vez.
Dónde no vamos por delante, y por qué conviene decirlo. En cuatro de las diez formas un competidor escribe menos bytes que nzbfast durante la propia descarga. En todos los casos es porque hizo menos: en la forma con contenedor interno corrupto, NZBGet escribe 3,29 GB frente a nuestros 4,65, y luego su pasada de reparación escribe otros 2,91, terminando en 6,20 GB frente a nuestros 4,65. En las demás, el cliente que menos escribió es uno que nunca llegó al archivo. Una cifra baja de disco no siempre es ahorro.
Estas son pruebas de capacidad, no de velocidad. Los contenidos son pequeños y se sirven desde memoria por una conexión local, sin proveedor ni red por medio, así que nada aquí está limitado por la velocidad de descarga y los segundos absolutos son mucho más cortos de lo que esas mismas formas tardarían en el mundo real. Que una forma requiera o no trabajo manual es una propiedad de la forma y del cliente, y se traslada directamente. Los segundos comparan clientes haciendo un trabajo idéntico, no predicen cuánto durará una tarea real.
Los resultados completos por forma, qué es cada forma y el método están en la página de datos de archivos anidados.
Por qué importa
El almacenamiento flash se desgasta por escribir en él. Un lanzamiento de 94 GB le cuesta a tu disco unos 90 GB de escritura con nzbfast; con un cliente que hace dos pasadas y descomprime, el mismo lanzamiento cuesta aproximadamente el doble. En un NAS con discos duros, la forma de una pasada también elimina la larga pasada de un solo hilo al final de cada descarga cifrada - una pausa medida en 20 segundos en una estación de trabajo rápida de 32 núcleos con desbloqueo acelerado por hardware, y correspondientemente más larga en las máquinas de bajo consumo donde la mayoría de la gente realmente ejecuta esto. Citamos el número pequeño porque es el que medimos.
Comparativas de componentes
Reparar (PAR2) y descomprimir (RAR) son código nativo nuestro, no binarios de terceros empaquetados, así que también los enfrentamos por separado contra las herramientas dedicadas sobre corpus idénticos, en cuatro máquinas que abarcan lo que un lector podría realmente tener. Un tiempo solo cuenta cuando la salida es idéntica byte a byte a la carga útil de origen: cada cifra de RAR de más abajo se comprobó con sha256 contra el origen, y cada archivo reparado contra el conjunto prístino.
La ronda anterior de esta tabla usaba entre 100 MB y 200 MB por forma, lo cual fue un error: unos 28 ms de arranque de proceso eran el 40% del tramo «store», y el orden que producía no sobrevive a un tamaño realista. Esta ronda es 1 GB de carga útil por forma, y cambia varias respuestas, incluidas algunas en el sentido contrario. Los archivos se crean con el rar 7.23 oficial, así que ninguna herramienta se juzga con una entrada de su propio codificador, y los mismos bytes se enfrentan en cada máquina.
Lo que hay dentro de la carga útil importa más de lo que parece. Una carga útil hecha de copias de bloques convierte cada forma comprimida en un benchmark de copia de memoria; una carga útil de texto puro la convierte en un benchmark de literales y Huffman; medimos las dos y no coinciden en quién gana. Así que las cuatro formas comprimidas usan tercios iguales de texto, registros estructurados y bytes incompresibles, y las dos formas en los extremos de ese rango son tramos separados a propósito: store es incompresible y repetitive es casi todo coincidencias. El generador y el arnés están en el repositorio, así que el corpus se puede reconstruir byte por byte.
Vuelto a correr el 23 de agosto de 2026 sobre el motor 1.2.2, y el barrido se mantiene. Las tres herramientas que un lector más suele sopesar - la nuestra, unrar 7.23 y rarpar 0.2.5 - se volvieron a enfrentar en el escritorio de 32 núcleos sobre el motor publicado (el código de extracción enfrentado es idéntico byte a byte a la etiqueta 1.2.2), seis rondas intercaladas, el mínimo por herramienta, la salida de cada tramo comprobada contra el manifiesto de la carga útil. Segundos, menos es mejor:
| Carga útil de 1 GB, 32 núcleos (23 ago 2026) | store | 400 archivos pequeños | solid | repetitive | grande, 3 volúmenes | cifrado | diccionario de 128 MiB |
|---|---|---|---|---|---|---|---|
| nzbfast 1.2.2 | 0,119 | 0,474 | 1,515 | 0,120 | 1,118 | 1,137 | 1,146 |
| unrar 7.23 | 0,190 | 2,032 | 1,784 | 0,139 | 1,655 | 1,846 | 1,420 |
| rarpar 0.2.5 | 0,206 | 2,563 | 2,395 | 0,237 | 1,852 | 1,857 | 1,725 |
Las siete formas nuestras, en el mínimo y en la mediana, de 1,16x a 4,29x contra unrar. Estos tiempos no son comparables celda por celda con la tabla más amplia de abajo - el arnés se ha revisado desde las rondas de esa tabla y los recuentos de rondas difieren - así que lee cada tabla contra sí misma. La tabla más amplia conserva sus propias fechas y su campo de seis herramientas, y su columna de nzbfast describe el motor que trae la 1.2.2: la vuelta a correr de arriba midió el nivel de motor actual con la versión de esa tabla en las siete formas, resuelto por conteo de instrucciones de hardware (0,14% menos para el mismo tiempo total), así que esas celdas no son las cifras de una versión superada llevando una etiqueta actual. Esta vuelta a correr es también donde se ganó la regla A/A de la sección de montaje. Un pase el mismo día primero reportó una forma como una pequeña regresión contra nuestra propia versión anterior, y la lectura sobrevivió a correr los dos órdenes de brazo. Un control A/A - el mismo binario enfrentado contra una copia idéntica byte a byte de sí mismo - mostró que el arnés le daba al brazo que corriera primero una penalización de aproximadamente 1,5%: el binario idéntico ganó solo 6 de 15 rondas desde la primera posición, y intercambiar los órdenes no cancela un sesgo que siempre recae en quien va primero. El conteo de instrucciones de hardware resolvió la pregunta que el arnés no pudo - la versión más nueva retira un 0,14% menos de instrucciones para el mismo reloj, así que no había ninguna regresión. Cada comparación de nuestra-versión-contra-nuestra-versión que publicamos ahora lleva ese control.
Todo el campo, segundos, menos es mejor. Mejor de tres, herramientas intercaladas dentro de cada ronda en vez de corridas en bloques, salida comprobada contra la carga útil de origen en cada ejecución. Una herramienta que produjo bytes incorrectos se lleva una nota de corrección, nunca un tiempo rápido. rarpar es el propio código RAR y PAR2 de Weaver, compilado desde el código fuente en bd87611; fijamos el commit en vez de una versión porque sus crates llevan tres números de versión distintos.
| segundos, 1 GB por forma | store | 400 archivos pequeños | solid | repetitive | grande, 4 volúmenes | cifrado | diccionario de 128 MiB |
|---|---|---|---|---|---|---|---|
| Escritorio de gama alta, 32 núcleos | |||||||
| nzbfast | 0,21 | 0,47 | 1,26 | 0,14 | 1,08 | 1,09 | 1,07 |
| unrar 7.23 | 0,21 | 2,02 | 1,62 | 0,16 | 1,61 | 1,82 | 1,37 |
| rarpar | 0,23 | 2,55 | 2,22 | 0,26 | 1,75 | 1,74 | 1,64 |
| unar 1.10.7 | 0,60 | 6,40 | 5,29 | 0,69 | 5,41 | 6,88 | 4,03 |
| bsdtar | 0,34 | 13,67 | 11,48 | 1,86 | salida incorrecta² | sin cifrado³ | sin diccionario grande⁴ |
| 7-Zip | 0,30 | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ |
| Escritorio más antiguo, 20 núcleos | |||||||
| nzbfast | 0,16 | 0,57 | 1,83 | 0,15 | 1,50 | 1,51 | 1,40 |
| unrar 7.23 | 0,25 | 2,48 | 2,31 | 0,20 | 2,28 | 2,49 | 1,84 |
| rarpar | 0,28 | 3,15 | 3,00 | 0,31 | 2,26 | 2,26 | 1,97 |
| unar 1.10.7 | 0,67 | 7,49 | 6,93 | 0,85 | 6,85 | 8,49 | 5,29 |
| bsdtar | 0,33 | 15,58 | 13,97 | 2,18 | salida incorrecta² | sin cifrado³ | sin diccionario grande⁴ |
| 7-Zip | 0,33 | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ | no compatible¹ |
| Portátil, 14 núcleos / 20 hilos, Windows⁵ | |||||||
| nzbfast | 0,35 | 1,05 | 2,92 | 0,32 | 2,32 | 2,22 | 2,04 |
| unrar 7.23 | 0,63 | 6,37 | 6,14 | 0,62 | 2,92 | 3,33 | 2,44 |
| rarpar | 0,74 | 11,58 | 9,76 | 0,54 | 2,72 | 2,85 | 2,38 |
| unar | sin CLI⁵ | sin CLI⁵ | sin CLI⁵ | sin CLI⁵ | sin CLI⁵ | sin CLI⁵ | sin CLI⁵ |
| bsdtar | 0,81 | 16,72 | 15,14 | 1,13 | salida incorrecta² | sin cifrado³ | sin diccionario grande⁴ |
| 7-Zip | 0,76 | 5,45 | 5,79 | 0,65 | 4,21 | 4,13 | 2,51 |
| Portátil, Apple M5 Max⁶ | |||||||
| nzbfast | 0,10 | 0,40 | 1,15 | 0,10 | 0,98 | 0,99 | 0,94 |
| unrar 7.22 | 0,16 | 1,94 | 1,87 | 0,15 | 1,75 | 1,91 | 1,52 |
| rarpar | 0,11 | 2,09 | 1,97 | 0,18 | 1,54 | 1,55 | 1,33 |
Dónde no pudo competir el campo, y por qué. ¹ El 7-Zip enfrentado aquí es el paquete de Homebrew, que rechaza cada forma comprimida con ERROR: Unsupported Method y solo lee la almacenada en macOS. Una versión anterior de esta página lo achacó a la compilación de 7-Zip para macOS, lo cual era incorrecto: Homebrew lo compila sin el códec unRAR no libre, mientras que la compilación para macOS que distribuye 7-zip.org sí lleva el códec y decodifica las siete formas, igual que la compilación para Windows. Vuelto a medir el 14 de agosto de 2026. Si instalas 7-Zip desde el proyecto en vez de desde Homebrew, esta columna no describe lo que tienes. ² bsdtar no admite RAR5 multivolumen y produjo un archivo truncado sin reportar ningún error, así que ese tramo es un fallo de corrección y no un tiempo lento; nuestro arnés lo detectó comprobando la salida, que es justo por lo que vale la pena comprobar la salida. ³ bsdtar: Encryption is not supported. ⁴ bsdtar: Declared dictionary size is not supported. ⁵ unar no distribuye ninguna herramienta de línea de comandos para Windows, así que el campo del portátil es de cinco. ⁶ El grupo M5 Max enfrenta las tres herramientas a las que realmente recurriría un lector de macOS - unrar, rarpar y la nuestra; unar, bsdtar y 7-Zip no se enfrentaron en esa máquina. Su unrar es el 7.22, la versión más reciente que corre ahí sin supervisión.
Todas las formas en todas las máquinas menos una, y esa es un empate. Las formas de coincidencias cortas se reducen a dos cosas concretas de nuestro decodificador. Una coincidencia de dos a treinta y dos bytes solía pagar una llamada completa a la rutina de copia de memoria de la plataforma, y la llamada costaba más que la copia; copiar en su lugar treinta y dos bytes fijos a través de un registro es por qué repetitive, solid y el diccionario de 128 MiB - las tres formas construidas con coincidencias cortas - son todas rápidas a la vez. Y la suma de comprobación corre aguas abajo del hilo del escritor en vez de sobre él. La única celda que no ganamos claramente es la forma «store» en el escritorio de 32 núcleos, donde unrar y nosotros estamos a tres milisegundos de distancia en un tramo que es puramente mover bytes - idéntico a la precisión de esta tabla, así que las dos celdas están marcadas y se puntúa como empate, ni pérdida ni victoria.
La forma en la que ganamos por más margen es la que usenet realmente publica a cientos a la vez: 400 archivos pequeños, 4,3× y 4,4× contra unrar y de 5,4× a 5,5× contra rarpar. Eso es paralelismo por miembro, y es la diferencia entre un extractor escrito para una cola de descargas y uno escrito para una línea de comandos. La forma «store», que el censo de arriba dice que es el 84% de los bytes que van por el cable, es un empate casi perfecto para las tres herramientas serias, porque a ese punto todo el mundo simplemente mueve bytes.
Una decisión que vale la pena declarar. Los archivos se empaquetan con el compresor fijado a cuatro hilos. La división en bloques de RAR, si no, sigue el número de núcleos de la máquina que empaquetó el archivo, así que una máquina de 32 núcleos y una de 20 núcleos producen bytes distintos a partir de la misma entrada y las máquinas dejan de ser comparables. Fijarlo hace que el corpus de extracción sea idéntico byte a byte en todas partes, que es el objetivo, pero también limita cuánto de la decodificación puede correr en paralelo - así que cuando las dos formas más cercanas eran pérdidas, las volvimos a enfrentar contra archivos empaquetados con los 32 hilos, para comprobar que no era la fijación lo que lo causaba. No lo era: «solid» pasó de un 4,2% por detrás a un 2,4% por detrás y el diccionario de 128 MiB de un 6,6% a un 6,3%, el mismo orden en ambos casos. Las dos son ahora victorias en el corpus fijado por un margen más amplio del que esa comprobación podría explicar.
Por qué no hay fila para RAR4, y qué pasa con esas publicaciones. Todas las formas de arriba son RAR5 o RAR7, que es lo que usenet publica hoy. Todavía aparecen archivos RAR4 más antiguos, y el mismo motor los lee, incluidas las formas comprimidas y protegidas con contraseña, en la misma pasada única que los más nuevos en vez de escribir los volúmenes en disco y descomprimirlos después. No tienen fila aquí porque el rar 7.23 oficial ya no puede crear RAR4, así que no hay corpus neutral sobre el que enfrentar al campo; ese trabajo se comprueba en su lugar contra archivos escritos con WinRAR 3.00, byte por byte contra unrar.
Corpus: 1 GiB de carga útil aleatoria empaquetada en modo «store» en 21 volúmenes RAR, luego dos conjuntos PAR2 al 10% de redundancia, uno con bloques de 1 MiB y otro de 64 KiB, y luego mapas de daño fijos. Cada ejecución usa el mismo protocolo: copia fresca, leer todo el corpus una vez para calentar el caché, y luego cronometrar. Mejor de tres rondas intercaladas; cada volumen reparado se compara contra el conjunto prístino en cada ronda. Menos es mejor.
Una corrección sobre el corpus, porque una versión anterior de esta página lo exageró. Decíamos que cada máquina corría un corpus idéntico byte a byte, comprobado por hash. Calcular el hash de cada volumen de cada conjunto muestra que eso es cierto en el escritorio de 32 núcleos y en el portátil Windows, que coinciden exactamente, y no en el escritorio de 20 núcleos, que tiene un sorteo aleatorio distinto de la misma forma: los mismos 21 volúmenes con los mismos tamaños, los mismos dos tamaños de bloque, y el daño verificado en los mismos 3, 101 y 1.500 bloques repartidos entre el mismo número de archivos. Cada cifra dentro de una fila se sigue midiendo sobre bytes que comparte cada herramienta de esa fila, que es en lo que descansa cada comparación. Pero las filas no son cuatro vistas de una sola entrada, y como el carácter de la carga útil vale alrededor de un 7% para el escaneo de un competidor, vale la pena declararlo en vez de pasarlo por alto.
Qué par2 es cuál. El par2cmdline original es la implementación de referencia de la que todos se bifurcaron. par2cmdline-turbo es la bifurcación que incorpora los núcleos de campo de Galois SIMD escritos a mano de ParPar: eso es precisamente lo que significa «turbo», y es por lo que turbo, en vez del original, es la herramienta que vale la pena medir. Las dos columnas turbo de abajo corren esos mismos núcleos de ParPar. Lo que las separa no es la aritmética sino la compilación y los flags.
Confirmado sobre la versión publicada contra el rival actual, 24 de agosto de 2026. Estas tablas se midieron antes de que se cortara la 1.2.2 y antes de que par2cmdline-turbo publicara la 1.5.0 (20 de agosto de 2026), así que la columna de 20 núcleos se volvió a enfrentar con las dos: nuestra versión publicada 1.2.2 contra turbo 1.5.0, tres rondas intercaladas por tramo, cada archivo reparado comparado contra el conjunto prístino. Los cuatro tramos se reproducen - los nuestros 0,18 / 0,30 / 0,75 / 2,02 frente a los 0,19 / 0,33 / 0,74 / 2,07 impresos aquí, y turbo 1.5.0 queda dentro de unos pocos puntos porcentuales de la versión de la tabla en cada tramo y en las dos configuraciones. Las celdas se mantienen tal como se publicaron; las otras tres máquinas conservan sus propias fechas.
Así que la competencia aparece dos veces, y una de esas columnas es su mejor caso y no su configuración por defecto. El binario de publicación que descargarías está compilado para una CPU base genérica y solo hashea un par de archivos a la vez; compilar el mismo código fuente para la CPU real del equipo y pasar -T16 le permite usar las instrucciones que esa máquina realmente tiene y hashear dieciséis archivos a la vez. En el portátil eso vale hasta 2,6x, enteramente por la compilación y los flags. Júzganos por la columna ajustada, que es la comparación más dura; la columna de fábrica es lo que en realidad experimenta quien se lo descarga. par2cmdline es el original, versión 1.2.0, compilado desde el código fuente en cada máquina. rarpar es la propia implementación de PAR2 de Weaver, compilada desde el código fuente con su backend de GPU Metal activado. El par2j de MultiPar es solo para Windows, así que aparece únicamente en las filas del portátil Windows. Las filas de M5 Max enfrentan a las dos herramientas con compilaciones actuales de macOS arm64 junto a las dos columnas turbo; el par2cmdline clásico no se enfrentó en esa máquina.
| segundos, conjunto de 1 GiB | escritorio, 32 núcleos | escritorio, 20 núcleos | portátil, 14 núcleos | portátil, M5 Max |
|---|---|---|---|---|
| sin daño - verificación limpia | ||||
| nzbfast | 0,11 | 0,19 | 0,23 | 0,18 |
| par2-turbo, ajustado | 0,31 | 0,38 | 0,42 | 0,28 |
| par2-turbo, de fábrica | 0,86 | 1,12 | 1,06 | 0,80 |
| par2cmdline | 3,03 | 3,84 | 3,81 | no enfrentado |
| rarpar | 2,62 | 3,45 | 2,96 | 2,32 |
| MultiPar | solo Windows | solo Windows | 1,34 | solo Windows |
| 3 bloques dañados - unos pocos artículos muertos | ||||
| nzbfast | 0,22 | 0,33 | 0,46 | 0,26 |
| par2-turbo, ajustado | 0,51 | 0,66 | 0,78 | 0,48 |
| par2-turbo, de fábrica | 1,08 | 1,46 | 1,42 | 1,00 |
| par2cmdline | 3,64 | 4,58 | 4,98 | no enfrentado |
| rarpar | 4,27 | 5,53 | 4,99 | 3,64 |
| MultiPar | solo Windows | solo Windows | 1,71 | solo Windows |
| 101 bloques dañados | ||||
| nzbfast | 0,48 | 0,74 | 0,96 | 0,66 |
| par2-turbo, ajustado | 0,88 | 1,17 | 1,40 | 0,85 |
| par2-turbo, de fábrica | 2,04 | 2,65 | 2,69 | 1,84 |
| par2cmdline | 5,57 | 7,57 | 11,7 | no enfrentado |
| rarpar | 4,73 | 5,73 | 5,74 | 4,17 |
| MultiPar | solo Windows | solo Windows | 2,65 | solo Windows |
| 1.500 bloques dañados - 91% de la recuperación usada | ||||
| nzbfast | 1,00 | 2,07 | 2,46 | 1,61 |
| par2-turbo, ajustado | 3,00 | 5,52 | 6,73 | 4,07 |
| par2-turbo, de fábrica | 5,21 | 8,20 | 9,30 | 6,01 |
| par2cmdline | 67,7 | 86,1 | 403 | no enfrentado |
| rarpar | 7,15 | 11,49 | 14,22 | 6,91 |
| MultiPar | solo Windows | solo Windows | 5,40 | solo Windows |
Las dieciséis celdas de nzbfast - cuatro máquinas en cuatro niveles de daño - son nuestras, varias por más de 2× contra la versión ajustada y de 2,3× a 7,7× contra la que realmente te descargarías. Las celdas de daño pesado son las interesantes, y la nota de abajo explica el algoritmo detrás de ellas.
El original vuelve a la tabla, y vale la pena ver por qué existe la bifurcación. Una versión anterior de esta página quitó la columna de par2cmdline alegando que era más lenta que todo lo demás de la ronda, lo cual es cierto y no es una razón suficiente: es la implementación de la que casi todas las demás herramientas descienden, y los lectores merecen la línea base en vez de nuestra afirmación sobre ella. En el nivel de daño más pesado tarda unos 69 s donde la bifurcación SIMD tarda 3,2 s y nosotros tardamos 3,1 s. Ese factor de veinte es todo el argumento a favor de los núcleos de campo de Galois escritos a mano, y es el mismo argumento que hacemos por los nuestros.
El daño ligero es el caso que importa. Un puñado de artículos fallidos es mucho más típico que 101 bloques muertos, y nada parecido a 1.500. La mayor parte de una reparación ligera no es en absoluto la matemática de Reed-Solomon, es leer y calcular MD5 de un gigabyte, que es por lo que la fila de 3 bloques sigue a la fila de verificación limpia en vez de a las de reparación.
El nivel de daño más pesado es un tipo de trabajo distinto, y se lleva un algoritmo distinto. Ese último nivel daña 1.500 bloques en los 21 volúmenes y consume alrededor del 91% de los datos de recuperación, que es donde la aritmética de Reed-Solomon, más que el hashing o el disco, se convierte en casi todo el trabajo. La versión publicada calcula las reparaciones más pesadas con una transformada teórico-numérica en vez del pliegue clásico de campo de Galois - la misma matemática, evaluada en una forma que escala mucho mejor con recuentos de bloques altos: 2,7× por delante de la versión ajustada en el escritorio de 20 núcleos, y en el portátil Windows 2,7× por delante de la versión ajustada y 2,2× por delante de MultiPar. El daño ligero sigue corriendo la vía clásica, que es por lo que los otros niveles apenas se movieron: la transformada solo compensa por encima de unos 512 bloques dañados, así que por debajo de eso el despachador no la usa.
Una vía más rápida solo vale la pena tenerla si no puede estar equivocada. Las dos vías calculan la misma cantidad y son idénticas a nivel de bit por construcción, y cada reparación de esta página se comprobó contra que los archivos reconstruidos coincidieran con el conjunto prístino: 228 reparaciones cronometradas entre las máquinas de esta ronda, cero discrepancias. La versión publicada no depende de ese historial. Cada reparación verifica su propia salida contra los hashes del archivo, y una que fallara se rehará automáticamente con la vía clásica, registrará la divergencia, y mantendrá la vía clásica para el resto de esa ejecución. El ajuste está en el panel como Modo PAR rápido si prefieres no tenerlo en absoluto, y las máquinas con muy poca memoria para él lo rechazan por sí solas en vez de intentarlo y fallar. Vuelto a medir el 2 de agosto sobre la versión actual: los dos escritorios quedan dentro de unos pocos puntos porcentuales de esta tabla, y con el Modo PAR rápido desactivado el escritorio de 20 núcleos vuelve exactamente al tiempo más lento de la vía clásica, que es lo que dice que la victoria es el método y no las condiciones.
La columna del portátil Windows necesitaba una corrección, y va en nuestra contra. Windows relega el trabajo sostenido en segundo plano a sus núcleos de eficiencia a los pocos segundos. Nuestro daemon renuncia a eso al arrancar y ninguna de las otras herramientas puede hacerlo, así que una versión anterior de esta página publicó sus tiempos limitados como si fueran los propios de las herramientas. Volver a correr esa máquina con cada herramienta elevada a prioridad alta mueve todo el campo: en el nivel de daño más pesado par2-turbo pasa de 22,4 s a 6,41 y rarpar de 59,2 s a 14,4, y en un corte de esta página eso convirtió la columna de nuestra en una que perdíamos. Toda la columna del portátil se mide así ahora - la corrección se mantiene aunque la fila se ha vuelto a ganar desde entonces por el cambio de algoritmo de arriba, porque los tiempos del campo en esa máquina solo son honestos con el límite levantado.
Cuando PAR2 no puede cubrir el daño, el registro de recuperación dentro del propio RAR es la última línea de defensa. Hasta la 1.0.8 el nuestro fallaba en cualquier archivo de más de unos 13 MB, así que este tramo no se podía correr en absoluto. El daño son tres agujeros de 3.000 bytes al 20%, 50% y 80% de la región protegida. Las dos herramientas produjeron una salida idéntica byte a byte al archivo prístino, y la nuestra es idéntica byte a byte a lo que escribe el propio rar r. Mejor de tres, escritorio de 32 núcleos, las dos herramientas vueltas a enfrentar juntas el 2 de agosto.
| 16 MB | 32 MB | 128 MB | 512 MB | 2 GB | |
|---|---|---|---|---|---|
| nzbfast | 0,049 | 0,059 | 0,130 | 0,400 | 1,527 |
| rar 7.23 repair | 0,278 | 0,466 | 1,065 | 2,291 | 6,400 |
| ventaja | 5,7× | 7,9× | 8,2× | 5,7× | 4,2× |
Una versión anterior de esta página mostraba el tamaño de 512 MB como una pérdida, y lo explicaba como el precio de trabajar el volumen por partes en vez de tenerlo entero en memoria. Esa explicación era correcta en su momento y ahora está obsoleta: el coste era un CRC64 bit a bit en serie en la vía de reparación, sustituido por uno basado en tabla, y la pérdida se fue con él. Ya no hay ningún cruce, y se conservó el conjunto de trabajo acotado. El tamaño de 2 GB está aquí porque los volúmenes que un daemon realmente encuentra van de 8 GB a 20 GB, no 512 MB, y un tramo que se detiene por debajo del rango real no es mucha prueba.
Qué movió este corte, y el control que lo confirma. Encontrar qué bloques estaban dañados se había convertido en la fase más grande de esta reparación - más grande que la propia aritmética de reparación - y corría en un solo hilo, leyendo 64 KB de cada grupo a lo largo del archivo, una vez por grupo. Ahora hace una sola pasada secuencial en el orden del archivo con las sumas de comprobación por fragmento calculadas en paralelo, y el volumen reparado se clona en vez de copiarse donde el sistema de archivos puede hacerlo. Solo la detección cayó de unos 300 ms a 18 ms en el archivo de 512 MB, que es la mayor parte de lo que se movió arriba. El control es la columna junto a la nuestra: rar r se volvió a enfrentar en las mismas rondas en la misma máquina y volvió dentro de unos pocos puntos porcentuales de sus tiempos anteriores, así que el cambio en la brecha es nuestro y no del banco de pruebas.
El M5 Max repite el patrón, enfrentado el 31 de julio con el mismo corpus y las mismas comprobaciones: 0,050 / 0,066 / 0,171 / 0,581 s contra los 0,211 / 0,335 / 0,751 / 1,735 s de rar r en los tamaños de 16 MB a 512 MB - de 3,0× a 5,1× más rápido; el tamaño de 2 GB no se enfrentó en esa máquina. Esas cifras son anteriores a la reescritura de la detección descrita arriba, así que son de la versión más antigua, conservadas aquí como la segunda máquina y no como una cifra actual.
El rarpar de Weaver está ausente solo de esta tabla, y no por elección: no implementa esta reparación. Cuando se le pide arreglar uno de estos archivos responde "embedded Rar5 recovery record detected ... this API restores standalone .rev recovery volumes only and does not consume embedded RR/protect data", y deja el archivo dañado. Aparece en cualquier otra comparación de esta página: los cuatro tramos de PAR2 de arriba, las siete formas de extracción antes de eso, y el tramo de volúmenes de recuperación inmediatamente de abajo, que es el trabajo que dice hacer - y que gana.
.rev perdidos por completoLa otra mitad de la propia historia de recuperación de RAR, y hasta esta ronda la mayor pérdida de esta página. Un archivo .rev es un volumen de recuperación independiente: tres de ellos junto a un conjunto de 21 volúmenes pueden reconstruir cualesquiera tres volúmenes que nunca llegaron. Corpus: 1 GiB almacenado en 21 volúmenes de 50 MB con rar rv3, y luego se borran los volúmenes 4, 11 y 19 - tres perdidos contra tres volúmenes de recuperación, que es el peor caso que el conjunto todavía puede sobrevivir. Mejor de tres, cada volumen reconstruido comparado contra el prístino.
| escritorio, 32 núcleos | escritorio, 20 núcleos | |
|---|---|---|
| nzbfast | 0,44 | 0,50 |
rar 7.23 rc | 0,46 | 0,58 |
rarpar restore-volumes | 0,48 | 0,61 |
La celda de 32 núcleos aquí era de 3,12 s contra los 0,47 de rar rc en el último corte de esta página, publicado como 6,6× más lento y el peor número de ella. La causa era que la resolución de borrado corría a unos 48 MB/s de salida reconstruida donde RARLab gestionaba 320; ahora corre sobre la misma aritmética basada en tabla que el resto del código de recuperación, lo que es una mejora de siete veces y convierte la pérdida en victoria en las dos máquinas. Los márgenes son 3% y 14%, así que es una victoria para declarar con sencillez en vez de para destacar en un titular, y la razón por la que se declara siquiera es que la pérdida se declaró primero.
Este tramo existe porque el rarpar de Weaver implementa exactamente esto y pidió ser medido en él. Iba ganando cómodamente cuando lo publicamos por primera vez, y lo publicamos entonces por esa razón.
La coincidencia de archivos nunca fue el coste, lo cual vale la pena registrar porque era el sospechoso intuitivo: los volúmenes de recuperación no llevan nombres de archivo, así que identificamos qué ranuras sobrevivieron calculando la suma de comprobación de cada volumen en disco en vez de confiar en cómo se llaman, y contra un conjunto sin daño, donde lo único que pasa es la coincidencia, toda la pasada tarda 0,18 s.
Qué más se movió, y dónde no se nota. Aterrizaron otros dos cambios de motor que estos corpus no pueden ver, listados aquí para que las cifras de arriba no se lean como toda la historia: los archivos RAR5 con decenas de miles de miembros resuelven cada miembro una vez en vez de recorrer la lista por cada trabajador, lo que es 3× menos tiempo de procesador con 40.000 miembros; y el lector de bits de RAR1.3 trabaja una palabra a la vez, lo que es 2×. Ninguno de los dos aparece arriba, porque las formas de aquí tienen 400 miembros y ningún RAR1.3.
Lo que deliberadamente no hacemos: nunca creamos PAR2. Un descargador no tiene razón para hacerlo, y ese tramo es de ParPar. También compramos velocidad con memoria en los dos motores: la extracción llega a un pico de unos 240 MB contra los 41 MB de unrar, y la verificación a unos 126 MB contra los 7 MB de turbo, porque estos son los motores integrados que viajan junto a una descarga en vivo en vez de ejecuciones únicas independientes. La forma con diccionario de 128 MiB es lo peor de ello, con unos 304 MB contra los 139 MB de unrar. La reparación más pesada ahora también cuesta memoria: el método más rápido para 512 o más bloques perdidos trabaja a partir de los datos de recuperación mantenidos residentes, así que se le permite hasta una cuarta parte de la RAM de la máquina, con un tope de 4 GB, y una máquina que no puede permitírselo pasa en silencio al método de baja memoria en su lugar - la misma aritmética y los mismos tiempos que las filas intermedias de la tabla de PAR2, solo que sin el 3× de la última. Si quieres el conjunto residente más pequeño posible para un trabajo independiente, las herramientas dedicadas siguen ganando esa columna.
Capacidad, no micro-benchmarks
| nzbfast | SABnzbd 5 | NZBGet 26 | rustnzb | Weaver | Usenapp | Newsbin | |
|---|---|---|---|---|---|---|---|
| NNTP en pipeline | sí | desactivado de fábrica | no | sí | -⁷ | - | - |
| verificación completa durante la descarga | cada bloque | después | verificación rápida | después | después | después | después |
| extraer durante la descarga | en flujo, sin volúmenes en disco | descompresión directa⁴ | descompresión directa⁴ | por etapas, luego descomprime⁵ | no | no | no |
| disco necesario para una publicación de N GB | ~1×N | ~2×N | ~2×N | ~2×N | ~2×N | ~2×N | ~2×N |
| veredicto de completitud antes de descargar | exacto a nivel de bloque | no | % de salud | no | -⁷ | comprobación de artículos | no |
| memoria acotada (nunca hace swap) | con presupuesto | ajuste de límite de caché | ajuste de caché | no | no | - | - |
| eleva su propio límite de archivos abiertos | sí, al arrancar | -⁸ | -⁸ | -⁸ | -⁸ | -⁸ | -⁸ |
| comprobar el archivo en cualquier momento durante la descarga | sí | no | no | no | no | secuencial | no |
| indexador integrado + muro de publicadores | sí, sin clave | no | no | no | no | interfaz de búsqueda | explorador de grupos |
| reemplazo directo para Sonarr/Radarr | API de SAB + Newznab | nativo | nativo | API compatible con SAB | RPC compatible con NZBGet⁷ | no | no |
| controles remotos móviles (nzb360/LunaSea) | sí | sí | sí | no | -⁷ | no | no |
| captura automática de watchlist + mejoras | integrado | vía *arr | vía *arr | no | no | Watchdog | reglas |
| binario único autocontenido | sí | paquetes de aplicación; Python en Linux | sí | sí | sí | .app | .exe |
| código abierto | GPL⁶ | GPL | GPL | MIT | sí | de pago | de pago |
| plataformas | mac/win/linux (x64 + ARM)/docker/flatpak | mac/win/linux/docker/paquetes NAS | mac/win/linux/docker/NAS + integrado | linux/win (mac desde el código fuente) | binario mac; código fuente en otro lugar⁷ | solo mac | solo win |
⁴ La descompresión directa igual materializa primero los volúmenes: 2× escrituras y 2× disco. ⁵ rustnzb 1.4.5 entrega cada escenario correcto byte a byte en la ronda del 23 de agosto de 2026, y su E/S de disco medida ahí es de aproximadamente 2,1x la carga útil - así que hace dos pasadas de los volúmenes y descomprime después de la descarga en vez de extraer en flujo (ver las tablas de coste). Sus versiones más antiguas (1.3.4-1.3.9) entregaban volúmenes ofuscados marcados «Completed» sin extraer; ese fallo está corregido en origen desde la 1.4.5. ⁶ GPL-3.0-or-later. ⁷ Weaver 0.7.8, su binario publicado más reciente, con la identidad probada por hash (el sha256 del tarball de publicación publicado y el binario que hay dentro coinciden con lo que enfrentamos); sus filas medidas vienen de la ronda de coste del 23 de agosto, sus celdas de capacidad marcadas «-» son funciones que no hemos evaluado y no ausencias confirmadas; habla un RPC compatible con NZBGet, que es como lo maneja nuestro arnés, pero no hemos probado los controles remotos móviles contra él. Usenapp/Newsbin son lectores comerciales de una sola plataforma con funciones de descargador; están listados porque la gente pregunta, no porque compitan en velocidad.
⁸ macOS arranca un programa con un límite de 256 archivos abiertos, y un conjunto completo de conexiones a través de varios servidores puede superarlo. nzbfast eleva su propio límite al arrancar en macOS y Linux: pide 65.536, va bajando hasta que el sistema lo acepta, nunca sobrepasa el límite duro del sistema, y sigue con lo que tenía si se le rechaza en cada paso. Windows no tiene un límite de este tipo por proceso. Las otras columnas están sin evaluar y no son ausencias confirmadas: no hemos leído el código de arranque de ningún otro cliente. Vale la pena saberlo por cómo falla: un programa que se queda sin archivos abiertos a mitad de un trabajo tiende a desaparecer en vez de reportar un error.
Prueba de transporte · medido en la 1.2.2
Cortes anteriores de esta página llevaban un conjunto más amplio de demostraciones de transporte - ejecuciones de saturación multilínea, ganancias de pipelining por RTT, una prueba de contrapresión, mediciones de techo de decodificación - enfrentadas sobre versiones que la v1.2.2 ha superado desde entonces. Bajo la regla de esta página se retiran en vez de dejarlas envejecer, y vuelven a medida que se cortan de nuevo sobre la versión actual; las tres afirmaciones de arriba son las que ya se han vuelto a medir sobre v1.2.2.