חמישה קליינטים, חומרה וספקים זהים, הרצות משולבות כך שסחיפת הספק מתקזזת. המדד הוא זמן לקובץ שמיש - מורד, מאומת, מחולץ - נמדד לצד הדיסק, השטח הפנוי והזיכרון שהמשימה עולה לכם. כל טבלה מציינת את הגרסאות שמולן רצה ואת היום שבו רצה. כולל את המקטעים שבהם איננו מנצחים.
בדף הזה
הגרסה הקצרה · נמדד 23 באוגוסט 2026 על קו הקוד ששוחרר בתור nzbfast 1.2.2
הסבבים החדשים ביותר בדף הזה רצו ב-23 וב-24 באוגוסט 2026 - החדש שבהם על בניית השחרור של v1.2.2 עצמה - מול הבניות העדכניות של ארבעה קליינטים אחרים על חומרה, קווים וספקים זהים: שתי צורות משימה מ-6.5 עד 87 GB, וקצבי קו מ-250 Mbit עד 10 GbE. לאורך הסבבים האלה אף קליינט לא היה זול יותר מ-nzbfast במעבד, בזיכרון ובדיסק ביחד: כל אחד עולה יותר בלפחות שניים מהשלושה, המקסימום שמישהו מהם חסך בכל ציר בודד היה כ-2 אחוזים - תיקו סטטיסטי, בתוך הפיזור הפנימי של אותו קליינט בין הרצה להרצה - ובדיסק כל אחד מהם הזיז לפחות פי שניים מהבייטים לתוצאה זהה בית-בית. כפי שהוא נשלח, nzbfast גם החזיק את הזיכרון הנמוך ביותר מכל קליינט שנמדד, בכל תרחיש, פי 2.0 עד פי 4.5 מהמתחרה הקרוב ביותר.
מי מכם זה?
רוב הקליינטים כותבים את ההורדה שלכם לדיסק לפחות פעמיים: פעם אחת בזמן ההורדה, ופעם נוספת בזמן הפריקה. nzbfast עושה את כל המשימה במעבר אחד, כך שהוא כותב בערך חצי מהבייטים למשימה, מחזיק פחות בזיכרון בזמן העבודה, ומוציא פחות שניות מעבד לכל GB. זה פחות עומס על המכונה בזמן שאתם משתמשים בה וחצי מהכתיבות למשימה על הכוננים שלכם, לאותם קבצים זהים בית-בית - ומכיוון שכל בייט חוצה את הדיסק פעם אחת בערך, הכונן שלכם צריך לעמוד בקצב הקו שלכם רק פעם אחת.
nzbfast לא מנצח בכל טבלה בעמוד הזה, והמקטעים שבהם הוא מפסיד נמצאים תחת המקטעים שבהם איננו מנצחים - כולל אחד מאותו סבב עצמו. מה שהחזיק בכל סבב שמדדנו הוא החשבון המשולב.
קודם המתודולוגיה
pipelining_requests=8 (הוא מגיע עם 1, כלומר ללא
צנרת, וההגדרה הזו שווה אחוזים דו-ספרתיים במשימות גדולות), NZBGet קיבל
ArticleCache/DirectWrite/DirectUnpack/ParQuick, ו-rustnzb את התצורה
המתועדת שלו. מאז 20 באוגוסט 2026 כל סבב מריץ חמישה ספקים ולא שישה -
מספר הספקים אינו מנוף תפוקה על המכונות האלה, שבהן ספק בודד יכול להגיע
לתקרת הקו בעצמו, ומערך קבוע שומר על הסבבים ברי-השוואה - כך שמספר על שישה
ספקים בעמוד הזה אינו בר-השוואה ישירה למספר חדש יותר על חמישה, וכל טבלה
מציינת כמה היא הריצה.הסבב מ-23 באוגוסט 2026
שש זרועות על מכונת Apple Silicon עם 20 ליבות על קו של 1 Gbit: nzbfast בברירות המחדל שנשלחות, אותו בינארי עם וסת החיבורים שלו כבוי, והבניות העדכניות של ארבעת הקליינטים האחרים. חמישה ספקים, TLS בכל מקום, שלוש חזרות לכל קליינט לכל תרחיש כשהסדר מסתובב בתוך כל סבב, והפלט של כל מקטע נבדק בית-בית: 36 מתוך 36 מקטעים הפיקו את המטען המדויק. ב-1 Gbit הקו קובע את הקצב וזמני הסיום מתכנסים מעצם התכנון, כך שעמודת הזמן נמצאת שם כדי להראות את ההתכנסות הזו; עמודות המשאבים הן מה שהסבב קיים כדי למדוד.
חוגה אחת חשובה, והיא מוצהרת ולא קבורה: ברירות המחדל שנשלחות כוללות כעת וסת חיבורים מודע-קו, ועל הקו הזה הוא החזיק 25 חיבורים בזמן שכל קליינט אחר הריץ את המאות המוגדרות שלו. השורה "וסת כבוי" חוגה את אותם 360 סוקטים שהסבבים הישנים יותר שלנו השתמשו בהם, כך ששתי ההשוואות נשארות זמינות: המוצר כפי שקורא מקבל אותו, והניסוי ההיסטורי.
| פרסום בעל שם של 6.5 GB, חילוץ בנתיב | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) | קו (GB) |
|---|---|---|---|---|---|
| nzbfast, ברירת מחדל (25 חיבורים) | 58 s | 143 MB | 35.7 s | 6.2 | 6.5 |
| nzbfast, וסת כבוי (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 |
| פרסום מעורפל של 34 GB | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) | קו (GB) |
|---|---|---|---|---|---|
| nzbfast, ברירת מחדל (25 חיבורים) | 302 s | 191 MB | 194.0 s | 32.5 | 34.4 |
| nzbfast, וסת כבוי (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 |
נמדד 23 באוגוסט 2026 מול SABnzbd 5.1.1, NZBGet 26.3-testing, rustnzb 1.4.5 ו-Weaver 0.7.8, חציונים של שלוש עם כל מקטע נבדק בית-בית, חמישה ספקים, הכול ב-TLS. זרועות ה-nzbfast רצו על בנייה של אותו קו קוד ממוקדם יותר באותו יום, כשבע שעות לפני בניית השחרור v1.2.2, ולכן השורות שלהן אינן נושאות מספר גרסה; הטבלאות של 500 Mbit ושל 87 GB בעמוד הזה כן רצו על בניית השחרור עצמה ואומרות זאת. ¹ החציון של המעבד של Weaver בתרחיש ה-6.5 GB נמוך ב-2% משלנו (34.9 מול 35.7) כששלושת המקטעים שלו עצמו נעים בין 34.1 ל-56.1 s, כך שכדאי לקרוא זאת כתיקו סטטיסטי; זהו התא היחיד בכל אחת מהטבלאות שמתחרה מחזיק, והוא חוזר תחת המקטעים שבהם איננו מנצחים. בתרחיש ה-34 GB המעבד שלנו הוא הנמוך ביותר באופן מוחלט. הגרסה החדשה יותר של Weaver, 0.8.3, אינה משחררת שום בינארי; הבנייה שלנו מהמקור שלה מדדה דפוס מעבד שלא נוכל לייחס בבירור לגרסה ולא לבנייה, ולכן הטבלה הזו מריצה את נכס השחרור 0.7.8 המוכח בגיבוב ואומרת זאת במקום לפרסם מספר מבולבל. rustnzb 1.4.5 השלים כל מקטע כאן, כולל תרחיש הערפול.
עמודת הקו, בדיוק. 6.5 GB בתרחיש הנקי - אותו מספר ש-NZBGet ו-SABnzbd מדווחים על עצמם. המקרה הגרוע ביותר שאנחנו מכירים הוא פוסט מעורפל שממוספר מחדש בכוונה, שבו הניווט סביב המספור המעורבב עולה מאמרה נוספת אחת לכל ניווט: נמדד ב-1.10-1.20 מהתוכנית המינימלית בשתי הצורות כאלה שהצלחנו לבנות. תאי ה-7.2 וה-37.8 GB של rustnzb הם עודף משלו, עם אזהרה ביומן שלו בשני מקטעים.
מה שעמודת הזיכרון אומרת בברירות המחדל: הוסת הוא רוב הסיבה לכך שהשורה הנשלחת מחזיקה 143-191 MB - פחות חיבורים זה פחות בתעופה - וכיבוי שלו (השורה השנייה) הוא הגשר ההוגן לכל טבלה ישנה יותר של 360 סוקטים בעמוד הזה. אפילו ב-360 סוקטים אנחנו שווים למתחרה הרזה ביותר (583 MB מול 628 של rustnzb בתרחיש הקטן, 465 מול 445 שלו בגדול); בברירות המחדל שנשלחות לא נותר שום תיקו.
קווים איטיים יותר · נמדד 24 באוגוסט 2026 על nzbfast 1.2.2
על קו איטי מספיק, זמן הסיום של כל קליינט הוא הקו עצמו ולא יותר, כך שקו איטי מסתיר הרבה חטאים. מה שהוא לא יכול להסתיר הוא מה שכל קליינט שורף כדי למלא אותו. עיצבנו את מתקן ה-1 Gbit לשני קצבים שתוכניות אמיתיות באמת מציעות והרצנו את כל שש הזרועות בכל אחד - אותה מכונה, אותם חמישה ספקים, שלוש חזרות לכל קליינט כשהסדר מסתובב, כל מקטע נבדק בית-בית, 36 מתוך 36 נכונים לאורך שני הסבבים. זרוע ה-nzbfast ב-500 Mbit היא בניית השחרור של v1.2.2 עצמה.
| קו 500 Mbit, פרסום של 6.5 GB | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) |
|---|---|---|---|---|
| nzbfast 1.2.2, ברירת מחדל | 109 s | 142 MB | 45.4 s | 6.2 |
| nzbfast 1.2.2, וסת כבוי | 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 |
| קו 250 Mbit, אותו פרסום | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) |
|---|---|---|---|---|
| nzbfast, ברירת מחדל | 217 s | 144 MB | 53.3 s | 6.2 |
| nzbfast, וסת כבוי | 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 |
קראו את שתי הטבלאות כמדרג. ב-250 Mbit כל השדה נוחת בתוך 18% על השעון ואנחנו מובילים את המתחרה הקרוב ביותר ב-4.4%; ב-500 Mbit הפער נפתח ל-14.7%; בקצבי הגיגה-ביט וה-10 GbE בטבלאות שלמעלה ולמטה הוא נפתח עוד יותר. הפערים במהירות גדלים עם הקו. עמודות המשאבים לא מחכות לקו מהיר: בכל קצב שנמדד, כל מתחרה החזיק לפחות פי 3.9 מהזיכרון, הוציא יותר מעבד, והזיז בערך פי שניים מבייטי הדיסק לאותו קובץ זהה בית-בית.
וסת החיבורים מוכיח את עצמו בקווים איטיים, ומונה הזריקות של המעצב עצמו אומר למה. ברירות המחדל שנשלחות החזיקו 25 חיבורים במקום שכל מתחרה הריץ מאות; אותו בינארי עם הוסת כבוי הריץ 360. פחות זרימות דרך תור קבוע פירושו פחות אובדן ופחות שליחה חוזרת: המעצב רשם כ-4,200 זריקות למקטע מוגבל מול כ-155,000 לא-מוגבל ב-500 Mbit, והזרוע המוגבלת הייתה מהירה יותר, קלה פי 4.2 בזיכרון וקלה פי 1.3 במעבד מהעמדה שלנו עצמנו ב-360 סוקטים. יותר חיבורים אינם יותר מהירות; מתחת לגיגה-ביט זה מדיד להיפך.
נמדד 24 באוגוסט 2026, חציונים של שלוש, על מכונת Apple Silicon עם 20 ליבות שהקו שלה עוצב לכל קצב (הקצב המעוצב אומת בבדיקה עצמאית לפני כל סבב: 248 ו-496 Mbit). זרוע ה-nzbfast ב-500 Mbit היא בניית תגית השחרור v1.2.2; הסבב ב-250 Mbit רץ שעות קודם לכן על אותה שורת קוד. ספירת הבייטים על קו מעוצב נקראת ממונה הקליינט עצמו, לעולם לא מממשק הרשת (המעצב זורק ו-TCP שולח מחדש, כך שהממשק סופר את שני העותקים). הזמנים ברי-השוואה בתוך כל טבלה, לא בין סבבים מעוצבים באופן שונה. ¹ שלושת המקטעים של NZBGet ב-500 Mbit נעו בין 114-158 s עם קריאות משאבים שטוחות - פיזור אמיתי, כך שהחציון מצוטט והפיזור מוצהר במקום לצמצם אותו.
הקובץ הגדול · נמדד 24 באוגוסט 2026 על nzbfast 1.2.2
הקצה השני של סיפור קצב הקו: מכונת 10 GbE, חמישה ספקים, פרסום של 87 GB שהמטען שלו הוא סרטון וידאו יחיד של 76.6 GB, שש זרועות, שלוש חזרות מסתובבות, והפלט של כל מקטע נבדק בית-בית - 18 מתוך 18 מקטעים הפיקו את הקובץ הזהה, כל שישה הקליינטים מסכימים על הצ'קסום שלו. זרועות ה-nzbfast הן בניית השחרור v1.2.2.
| פרסום של 87 GB, 10 GbE | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) | קו (GB) |
|---|---|---|---|---|---|
| nzbfast 1.2.2 (50 חיבורים)¹ | 70 s | 415 MB | 144 s | 72.9 | 77.2 |
| nzbfast 1.2.2, וסת החיבורים דלוק (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 |
סיפור הדיסק בקנה המידה הגדול ביותר עד כה. שיא הדיסק שלנו במהלך המשימה הוא 70.8 GiB - מתחת לפלט של 76.6 GB, כי הזנב של המטען עדיין מגיע בזמן שהראש כבר סופי - וסך קלט/פלט הדיסק הוא פי 1.00 מהמטען. המתחרים מזיזים פי 2.5 עד פי 6.0 מהבייטים לאותו קובץ. והזרוע המהירה ביותר מחזיקה כ-8.7 Gbps כולל אימות וחילוץ בזרם; ברגע שמד ההורדה מתמלא, הקובץ מוכן.
¹ כל קליינט בעמוד הזה מתחרה בהגדרות הטובות ביותר המתועדות שלו, ובקו 10 GbE שלנו זה 50 חיבורים בסך הכול - 10 לכל שרת, חוגה שכל דרגת חשבון מגיעה אליה - אותו כיוונון בהגדרה אחת שאנחנו נותנים לכל מתחרה (SABnzbd את הצנרת שלו, NZBGet את מטמון המאמרים שלו). חמישים אינו נכות: סריקה של שש מדרגות על אותו תרחיש מצאה את התקרה זהה מ-50 חיבורים עד למקסימום החשבון של 360, בזמן שעלות המעבד עולה פי 2.3 לאורך הטווח הזה בלי כלום, כך שהמקסימום לא קונה שום דבר שהטבלה הזו הייתה מראה. שורת 50 החיבורים נמדדה אז מחדש באיכות מלאה של שלוש חזרות באותו יום, על אותה מכונה, מול אותו צ'קסום פלט: 70 / 70 / 70 s, כל השלושה נבדקו בית-בית. שורת הוסת נמצאת כאן כי היא המעניינת יותר: בכל קצב עד גיגה-ביט 25 החיבורים שלה חינם-עד-מהיר-יותר, ואפילו כאן, שבו הם עולים בערך חמישית מהזמן, הם קונים 336 מול 415 MB זיכרון ו-130 מול 144 שניות-מעבד. כיוונון הוסת אוטומטית לפי קצב הקו - כך שההתנהגות הטובה ביותר היא גם ברירת המחדל, בברך ולא במקסימום - נמצא בתור לגרסה הבאה. ² ה-435 GiB של קלט/פלט הדיסק של Weaver להורדה של 77 GB הם אחסון המוצפן-במנוחה שלו קורא וכותב מחדש כמעט הכול ככל שהמשימה גדלה - הדפוס העל-ליניארי שהסבבים המכשירים שלנו ביולי מדדו, עדיין נוכח בבנייה הנוכחית. ³ rustnzb 1.4.5 מסיים נכון בית-בית והעלות שלו היא זמן מעבד וקו: כ-2,444 שניות-מעבד מול שעון של 869 s לאורך כל שלוש החזרות, ו-86.9 GB שנמשכו במקום שהתוכנית הלהוטה היא 77.2 (הוא מושך את מערך השחזור המלא ללא תנאי). נמדד 24 באוגוסט 2026, חציונים של שלוש, כל בנייה עדכנית; חזרה 3 בשלוש הזרועות המהירות ביותר רצה כ-40 דקות אחרי השאר (שומר שטח פנוי השהה את הסבב; ההיסט לא הזיז אף חציון ביותר מפיזור החזרות).
מאז הסבב הזה, שורת הווסת נעקפה על ידי מה ש-1.2.3 מספקת. נמדד ב-26 באוגוסט 2026 על אותו תרחיש, אותה מכונה ואותו קו 10 GbE, שישה מקטעים נכונים בית-בית מול סכימת הביקורת של הטבלה הזו: 71 s בברירת המחדל, 322 MB ו-139.3 שניות מעבד, מול 90 s שלמעלה. זה היה סבב של nzbfast בלבד על בנייה מאוחרת יותר, ולכן הוא נאמר כאן במקום להתחרות בטבלה: כל שורה למעלה עומדת כפי שנמדדה ב-24 באוגוסט.
הקליינט המסחרי הראשון בעמוד הזה: Newsbin Pro, הקליינט המשולם הוותיק ביותר ל-Windows, מתחרה מול הבנייה הרשמית שלנו ל-Windows על מכונת Windows טבעית עם 10 GbE שכונן המערכת שלה מסוג TLC מחזיק 0.99 GB/s של כתיבות - הדיסק האיטי ביותר בצי הבדיקה שלנו, מה שהופך אותו למקום ההוגן להריץ בו קליינט דו-שלבי. אותו פרסום של 87 GB, שלוש חזרות משולבות, הפלט של כל מקטע נבדק בית-בית מול אותו צ'קסום כמו בטבלה שלמעלה: 6 מתוך 6 זהים.
| פרסום של 87 GB, Windows, דיסק TLC | זמן לקובץ שמיש | שיא זיכרון (RSS) | זמן מעבד | קלט/פלט לדיסק (GiB) | קו (GB) |
|---|---|---|---|---|---|
| nzbfast 1.2.2 (50 חיבורים) | 105 s | 469 MB | 154 s | 84.5 | 76.7 |
| Newsbin Pro 6.90 (360 חיבורים) | 477 s | 881 MB | 1,862 s | 154.1 | 76.7 |
נמדד 24 באוגוסט 2026, חציונים של שלוש, שני הקליינטים עדכניים. Newsbin רץ במקסימום החיבורים המוגדר לכל שרת שלו עצמו - 360 סוקטים מול ה-50 שלנו - והזמנים שלו לא כוללים את 90 שניות ההתייצבות שהמתקן שלנו מחכה לפני שהוא מכריז שקליינט מנוטר סיים, כך שההשוואה נוטה לכיוונו פעמיים והתוצאה עומדת בכל זאת: פי 4.5 בשעון, פי 12 בשניות-מעבד, ופי 1.9 בזיכרון לאותו קובץ זהה. אף צד לא מוגבל-דיסק כאן - הזרוע החד-מעברית צריכה כ-0.73 GB/s מתוך ה-0.99 של הכונן, ו-Newsbin ממוצע שליש מכך בזמן שהיא מחזיקה כמעט ארבע ליבות מעבד עסוקות במשך שמונה דקות - כך שהפער הוא הקליינט, לא החומרה. שני הקליינטים משכו את אותם בייטי קו למטען. Newsbin הוא סימן מסחרי רשום של CMCE, Inc.; הקליינט מפורסם על ידי DJI Interprises, LLC.
המפקד
נשקל מחדש באוגוסט 2026 על אוכלוסייה גדולה בהרבה. מפקד יולי שלמטה קרא שתי קבוצות; האינדקס שמאחוריו מחזיק כעת 13.2 מיליון פרסומים ו-174.7 TB על פני 114 קבוצות, והתמהיל זז - ארכיוני 7z גדלו מפחות מ-2% מהבייטים לנתח משמעותי. נמדד מחדש על האוכלוסייה הזו, כ-95% מבייטי הפרסומים השלמים עוברים במעבר אחד (94.3% עד 96.3% על פני ארבע דרכים לחתוך את האוכלוסייה), והמסמן שבאמת חשוב אינו צורת הארכיון אלא הסיסמה: כשליש מהבייטים צריכים אחת כדי להפיק פלט בכלל, לא משנה איזה קליינט אתם מריצים. תמונת המצב של יולי נשארת למטה כתמונת המצב שהיא.
למפקד יולי בדקנו 890,852 פרסומים, 1.6 מיליון קבצים ו-79.6 TB בשתי קבוצות הסרטים והסדרות העמוסות ביותר, ואז קראנו את כותרות הארכיון של אלף פרסומים אמיתיים כדי לאמת את מה ששמות הקבצים רק רמזו. נספר לפי בייטים ולא לפי פרסום, כי מיליון קבצים זעירים שוקלים פחות מקובץ גדול אחד.
זה שינה את מה שאנחנו עובדים עליו. אין טעם רב לייעל נתיב דחיסה שנושא 1.4% מהנתונים, ולכן ייעלנו את השניים שנושאים את כל השאר.
גם ההצפנה אינה מתחלקת באופן אחיד. היא גדלה עם הגודל:
| גודל הפרסום | חלק מכלל הנתונים | מאוחסן | מוצפן |
|---|---|---|---|
| 1-5 GB | 29% | 94% | 2% |
| 5-20 GB | 39% | 97% | 2% |
| 20-60 GB | 20% | 67% | 33% |
| מעל 60 GB | 12% | 51% | 49% |
הורדות רגילות הן כמעט תמיד ארכיונים מאוחסנים פשוטים. הגדולות הן הטלת מטבע בין מאוחסן למוצפן. הצורה המאוחסנת היא מה שכל טבלה נוכחית בעמוד הזה מריצה; סיפור הדיסק של הצורה המוצפנת נמדד במדור שלה למטה.
הפוסט הפגום · הורץ מחדש 24 באוגוסט 2026, כל בנייה עדכנית
מאמרות פגות, שרתים משמיטים אותן בשקט, העלאות נוחתות באופן חלקי - והנזק הוא המקום שבו הפער בין הקליינטים הרחב ביותר, ולכן הוא מקבל סבב משלו על הבנייה החדשה ביותר של כל קליינט, nzbfast v1.2.2 כלול: מכונת אירופה 10 GbE, חמישה ספקים, 100 חיבורים לכל קליינט, אותו פרסום של 6.5 GB מורעל בשלוש רמות נזק, שלוש חזרות לכל זרוע כשהסדר מתחלף, כל מקטע נבדק בית-בית מול הקובץ הנקי. 63 מתוך 65 מקטעים חזרו זהים בית-בית; השניים שלא, שמם מוזכר למטה, כי הם תוצאות.
| זמן לקובץ מאומת ושמיש (ממוצע של 3) | 60 מאמרות מתות | 20 מתות | 5 מתות |
|---|---|---|---|
| nzbfast 1.2.2 | 13.0 s | 10.0 s | 8.7 s |
| nzbfast 1.2.2, תיקון מוקדם כבוי | 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 | לא הסתיים³ | לא הסתיים³ | 194.0 s |
למה הפוסט הפגום מהיר כאן. כשמאמרה חסרה, קליינט בדרך כלל שואל את השרת הבא, ואז את הבא, עד שכל שרת סירב אותה - הליכה טורית שהסירובים שלה לוקחים בין עשרות מילישניות לכמה שניות כל אחד, ובזמן הזה ההורדה יושבת על אפס. nzbfast מפסיק לשאול: ברגע שנתוני הזוגיות שכבר בידיים מכסים את מה שעדיין חסר, הוא מתקן מיד במקום לסיים את ההליכה. זו השורה השנייה - אותו בינארי עם ההתנהגות הזו כבויה איטי פי 1.4 עד פי 2.3 בהתאם לנזק - והסבב אימת שהמנגנון פעל בכל מקטע מופעל ואף פעם לא במקטע מושבת. מול המתחרה הקרוב ביותר המרווח הוא פי 2.4 עד פי 2.7, בלי חפיפה באף אחד מתשעה זוגות החזרות.
הדיסק הוא המקום שבו המרווח הרחב ביותר, וזה לא תרגיל התיקון. כל זרוע שסיימה הפיקה את אותו קובץ של 6.48 GB; שלנו הזיז 6.2-6.8 GB של קלט/פלט דיסק כדי לעשות זאת, NZBGet 12.7-18.5 GB, SABnzbd 13.9-20.3 GB ו-rustnzb 12.8-13.1 GB. זה צינור המעבר האחד - השורה הכבויה מזיזה את אותם 6.2 GB - כך שזה מחזיק גם בפוסטים פגומים וגם בשלמים.
¹ שלושת המקטעים של SABnzbd בנזק הכבד ביותר רצו 43, 41 ו-60 s - פיזור אמיתי על קלטים זהים, כך שהממוצע מצוטט עם הטווח מוצהר. ² rustnzb 1.4.5 סיפק כל מקטע נכון בית-בית, והעלות שלו יושבת בזמן מעבד ולא באמינות: כ-1,620 שניות-מעבד מול שעון של 107 s בנזק הכבד ביותר - בערך חמש עשרה ליבות עסוקות לאורך כל המקטע - כשאותו פלט מתוקן עולה לנו כ-50 שניות-מעבד. ³ Weaver הזיז 1.5 GB ו-4.9 GB מתוך ה-6.5 בתוך מגבלת 20 הדקות שלנו בשתי רמות הנזק הכבדות יותר - אותה אי-סיום בכל שלושת הסבבים שהריצו אותו, בשלושה לילות נפרדים; המגבלה היא שלנו והתוצאה היא אי-הסיום. ב-5 מאמרות מתות הוא סיים נכון בכל שלוש הפעמים. עלות המעבד שלו שם היא סיפור בפני עצמו: כ-2,325 שניות-מעבד למקטע של 194 s, מול ה-20 שלנו.
נמדד 24 באוגוסט 2026, כל הבניות עדכניות: nzbfast v1.2.2 (תגית השחרור עצמה), NZBGet 26.3-testing (בנייה מ-20 באוגוסט), SABnzbd 5.1.1, rustnzb 1.4.5, Weaver 0.7.8. זרוע רציפות הריצה את בניית ה-nzbfast של הלילה הקודם בתוך אותו סבב עצמו ונחתה בתוך שנייה מ-v1.2.2 בכל תרחיש, כך ששום דבר כאן לא רוכב על לילה בר-מזל; והתצורות של המתחרים נבדלות מאלה של הסבב הקודם רק בנתיב היישום, נבדקו מפתח למפתח לפני שהסבב רץ.
העמודה הכנה
המדור הזה קיים למען המקטעים שמתחרה מנצח בהם, והוא נמדד מחדש בכל סבב במקום להיערך: כל מה שאנחנו מפסידים בו מגיע לכאן, בשם, לצד הטבלה שמראה אותו. בבנייה הנוכחית, בסבב הזה, הוא ריק מהפסדי מהירות - וזה שווה זהירות יותר מסיפוק, כך שהעסקאות שנותרות מוצהרות למטה במקום זאת.
מה שלא נעלם הוא העסקה שמאחורי המספרים האלה, אז זה מה שהמדור הזה אומר עכשיו: אנחנו מוציאים יותר זיכרון מהכלים העצמאיים, ונתיב התיקון הכבד המהיר מוציא הכי הרבה. המחלץ והמתקן שלנו בנויים לרכוב על הורדה חיה ולא לרוץ פעם אחת משורת פקודה, וזה עולה זיכרון שוכן; הפירוט נמצא לצד טבלאות הרכיבים. אם האילוץ שלכם הוא טביעת הרגל הקטנה ביותר האפשרית למשימה חד-פעמית, הכלים הייעודיים מנצחים בעמודה הזו ואנחנו לא נעמיד פנים אחרת.
והסבב מ-23 באוגוסט 2026 מוסיף רשומה, שהיינו מעדיפים לרשום כאן מאשר להשאיר בהערת שוליים: בתרחיש ה-6.5 GB, החציון של המעבד של Weaver נמוך ב-2% משלנו - 34.9 מול 35.7 שניות-מעבד, כששלושת המקטעים שלו עצמו נעים בין 34.1 ל-56.1 s - כך שאנחנו קוראים לזה תיקו סטטיסטי, וזה יושב בטבלת העלות מסומן כתא היחיד שאיננו מחזיקים. בתרחיש ה-34 GB באותו סבב המעבד שלנו הוא הנמוך ביותר באופן מוחלט.
הרעיבו אותו מ-RAM · נמדד 24 באוגוסט 2026 על nzbfast 1.2.2
אותה משימה של 87 GB כמו בסבב שלמעלה, הורצה מחדש בתקציבי זיכרון קשיחים של 2 GB, 1 GB ו-256 MB - מה שקובע הגודל האוטומטי היה בוחר במכונה של 8 GB, במכונה של 4 GB, וב-NAS של 2 GB. כל מקטע הפיק את אותו קובץ זהה בית-בית, ועמודת הזיכרון עקבה אחרי התקציב, אף פעם לא אחרי המשימה:
| משימה של 87 GB, 10 GbE | אוטומטי | תקציב 2 GB | תקציב 1 GB | תקציב 256 MB |
|---|---|---|---|---|
| זמן לקובץ שמיש | 94 s | 87 s | 94 s | 102 s |
| שיא זיכרון (RSS) | 286 MB | 558 MB | 336 MB | 284 MB |
| קלט/פלט לדיסק (GiB) | 73.2 | 73.2 | 72.8 | 72.7 |
מקטע יחיד לכל תקציב על בניית השחרור, נשער מול אותו צ'קסום פלט כמו סבב שש הזרועות. התקציב ההדוק ביותר עולה כ-9% מהזמן, ורק כי הקו הזה הוא 10 GbE - בלוקים שנשפכים עולים זמן רק כשהקו עוקף את הדיסק, כך שבחיבור בית טיפוסי תקציב קטן קרוב לחינם. הסולם כולו, כולל הורדה של 87 GB, נכנס ל-0.3-0.6 GB זיכרון; בברירות המחדל שנשלחות המשימה רצה ב-286 MB. שום קליינט אחר לא מציע תקציב זיכרון קשיח לכל התהליך; הדבר הקרוב ביותר הוא חוגות גודל-מטמון, והסבב שלמטה מודד מה הן עולות.
המהדק התחרה מול החוגות של השדה עצמו. בתרחיש ה-34 GB (23 באוגוסט 2026, מכונת 1 Gbit, חמישה ספקים, 30 מתוך 30 מקטעים נכונים בית-בית), החזקת NZBGet למהדק מטמון שווה-ערך יותר מהכפילה את המעבד שלו (215.5 ל-453.0 שניות-מעבד, פי 2.10) כדי לקנות קיצוץ של 52% בשיא הזיכרון שלו, והמהדק של SABnzbd היה כמעט חינם אך הגיע רק לחלק מטביעת הרגל שלו. הגדרת המטמון של rustnzb הייתה קישוטית בבנייה שהתחרתה, ול-Weaver אין שום חוגת זיכרון בכלל, כך ששניהם רצו לא-מהודקים כעמודות ייחוס במקום להיבדק בתקציב שהם לא יכולים להחזיק. הצד שלנו עצמנו באותו סבב הוחלף על ידי סולם v1.2.2 שלמעלה, שאומר את אותו הדבר בפי 2.5 מהגודל: התקציב לעולם אינו האילוץ המגביל, כי מעבר-אחד מחזיק כל כך מעט מלכתחילה.
שטח פנוי · נמדד למגה-בייט
קליינט של כתיבה-ואז-פריקה צריך מקום לכרכי הארכיון ולמטען המפורק בו-זמנית, כך שמשימה לא תתחיל בלי בערך פי שניים מההורדה פנוי. מעבר-אחד צריך את המטען - והסבב הזה מדד כמה מעט יותר, על ידי כיווץ נפח היעד עד שכל קליינט נכשל. התשובה של nzbfast היא קבוע של כ-50 MB רזרבה, לא יחס, והיא מחזיקה ממשימה של 6.5 GB עד 34 GB.
| שטח פנוי שהמשימה צריכה | משימה של 6.5 GB | משימה של 34 GB |
|---|---|---|
| nzbfast 1.2.2 | הפלט + 48.6 MB | הפלט + 51.0 MB |
| NZBGet 26.3-testing | ~פי 2.1 מהמטען | ~פי 2.1 (37.6 GB מעל הפלט) |
| SABnzbd 5.1.1 | ~פי 2.1 מהמטען | ~פי 2.1 (37.6 GB מעל הפלט) |
| rustnzb 1.4.5 | ~פי 2.25 מהמטען | ~פי 2.25 (42.7 GB מעל הפלט) |
| Weaver 0.7.8 | ~פי 2.25 מהמטען | ~פי 2.25 (42.7 GB מעל הפלט)¹ |
נמדד על מכונת Apple Silicon עם 20 ליבות, קו 1 Gbit, חמישה ספקים, שלוש חזרות בכל גבול, כל מקטע שהושלם נבדק בית-בית - שורות המתחרים ב-22-23 באוגוסט 2026 (התא של 34 GB של Weaver הורץ מחדש ב-24 באוגוסט, הערה 1), ושורת nzbfast נחתכה מחדש על בניית השחרור v1.2.2 ב-24 באוגוסט, ששיחזרה את שני הגבולות בדיוק, 12 מתוך 12 מקטעים פה-אחד על פני שני התרחישים. התאים שלנו הם רצפה נמדדת: המשימה מסתיימת 3 מתוך 3 עם 48.6 MB ו-51.0 MB רזרבה, ומסרבת 3 מתוך 3 בערך 17 MB מתחת לכך - כך שהרצפה אמיתית בשני הכיוונים. מה שהמשימה בפועל מחזיקה מתייצב על הפלט ועוד כ-3 MB; הרזרבה משלמת עבור הרגעים האחרונים של הצינור, לעולם לא עבור עותק שני. התאים של המתחרים הם הרצפה הנמדדת שלהם במשימה של 6.5 GB ומספיקות מאושרת באותו יחס במשימה של 34 GB (3 מתוך 3 נכונים בית-בית באותו יחס בדיוק); לא ירדנו בסולם שלהם עוד יותר בגודל הגדול, כך שהרצפה האמיתית שלהם שם עשויה לשבת מעט מתחת ליחס, ואנחנו אומרים זאת במקום לעגל לטובתנו.
מה שהיגמרות שטח פנוי נראית כמוה בפועל חשוב לא פחות מהמספר. ב-17 MB מתחת לרצפה שלו nzbfast פוגע בסירוב הדיסק על כתיבה, נעצר בניקיון עם "אין שטח פנוי בדיסק", שומר את כל מה שנחת ביומן, והרצה חוזרת ממשיכה בלי להוריד מחדש - חלקי שאתם שומרים, לא משימה שנכשלה. ¹ התא של Weaver בתרחיש הגדול הוכרע בהרצה חוזרת ב-24 באוגוסט: שלושה מקטעים מתוך שלושה נכונים בית-בית באותו ~פי 2.25, כל אחד מהם מהיר יותר מהמקטע הטוב של הניסיון הראשון, על שטח פנוי זהה עד לבית. בניסיון הראשון, ב-23 באוגוסט, שניים משלושת המקטעים שלו נתקעו במהירות של ספרה בודדת MB/s עם יותר מ-60 GB עדיין פנויים ופגעו במגבלת 40 הדקות של הסבב. התקיעות האלה לא חזרו, ומדידת התקיעות של המתקן הייתה פרוסה ושקטה בכל שלושת מקטעי ההרצה החוזרת, וזו מדידה חיובית ולא היעדר מדידה. מה גרם להן עדיין לא ידוע, והרצה חוזרת נקייה אינה אבחנה: כיום קיימים שישה מקטעים ביחס הזה, ארבעה מהם הושלמו, ושני הכשלים מגיעים מחלון אחד של 80 דקות בלילה הראשון.
התוצאה של המכפיל
לכל כונן, קצב הקו שהוא יכול להחזיק לאורך הורדה, אימות ופריקה הוא הקצב האמיתי של הכונן חלקי מכפיל הקלט/פלט של הקליינט. טבלאות העלות שלמעלה מודדות את שלנו בכ-פי 1.0 - כל בייט חוצה את הדיסק פעם אחת בערך - וכל מתחרה בפי 2.0 עד פי 3.0 לפלט זהה בית-בית. אז אותו כונן מחזיק פי שניים עד פי שלושה מקצב הקו תחת nzbfast ממה שהוא היה מחזיק תחת קליינט דו-שלבי. החשבון, כשהמכפילים לקוחים מהטבלאות הנמדדות שלמעלה:
| קו | קצב המטען | דיסק נדרש ב-~פי 1.0 שלנו | בפי 2.2 | בפי 3.0 |
|---|---|---|---|---|
| 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 |
הציבו את העמודות האלה מול מה שכוננים באמת מחזיקים. כונן NAS בסיבוב 5400/5900 סל"ד מחזיק בערך 100-140 MB/s על המסלולים החיצוניים שלו, דועך לכיוון 80-100 ככל שהוא מתמלא - כך שגיגה-ביט כבר גבולי בפי 1.0 במחלקה האיטית ביותר, מה שאנחנו אומרים בגלוי, ומחוץ להישג יד בפי 2-3. כונן בסיבוב 7200 סל"ד מחזיק בערך 160-220 MB/s. ה-~550 MB/s של SSD מסוג SATA מגביל קליינט בפי 2.2 לקרוב ל-2 Gbit ונושא כ-3.5-4 Gbit בפי 1.0. כונני SMR, שנמכרים לתוך תושבות NAS שנים רבות, הם המקרה הגרוע ביותר עבור דפוס הדו-שלביות בפרט: כתיבה מתמשכת עם קריאה-חזרה יכולה לקרוס לעשרות MB/s ברגע שמטמון ה-reshingling של הכונן מתרוקן. וקו מרובה-גיגה הוא אותה חומה גבוה יותר: 10 Gbit במכפיל פי 2-3 דורש 2.75-3.75 GB/s מתמשכים, מעבר לכל כונן SATA ומעבר לכוננים רבים מסוג NVMe ברגע שמשימה גדולה עוקפת את אזור המטמון המהיר שלהם, בזמן שבפי 1.0 SSD של ~2 GB/s עומד בקצב הקו עם מקום לרזרבה.
נמדד ולא מוצהר, על דיסק מוגבל. הגבלנו דיסק ל-150 MB/s - קצב ממחלקת 5400 סל"ד - והרצנו את אותה הורדה פעמיים: פעם אחת במעבר-אחד, פעם אחת בעקבות דפוס הדו-שלביות של כתיבה-החוצה, קריאה-חזרה ופריקה. הזרוע החד-מעברית עמדה בקצב קו ה-1 Gbit ב-109.9 MB/s, 0.2% מתחת לקצב הלא-מוגבל שלה עצמה; דפוס הדו-שלביות נפל ל-59.0 MB/s, 54% מהקו. בסריקה פרמטרית בלי הגבלת קו, הזרוע החד-מעברית לקחה 97% ממה שהדיסק הציע בכל הגבלה (290.7 MB/s מתוך הגבלה של 300 MB/s, 145.6 מתוך 150) בקלט/פלט דיסק נמדד של פי 1.00-1.03, ודפוס הדו-שלביות לקח 47-48% בפי 3.02 נמדד - היחס קבוע לאורך ההגבלות, וזה החשבון שלמעלה משוחזר כמדידה. 32 מקטעים, כל פלט נבדק בית-בית.
ופעם אחת על חומרה אמיתית, לא מוגבלת. הכונן האיטי ביותר בצי הבדיקה שלנו הוא דיסק מערכת מסוג TLC על מכונת Windows טבעית עם 10 GbE, מחזיק 0.99 GB/s של כתיבות שבו המכונה המהירה ביותר שלנו מחזיקה 5.97. סבב ה-Windows של 87 GB שלמעלה רץ עליו: הזרוע החד-מעברית הזדקקה לכ-0.73 GB/s מתוך ה-0.99 כדי להחזיק 105 s של זמן - רזרבה לפזר על הדיסק הגרוע ביותר בצי - וזה התא הימני-עליון של הטבלה שלמעלה נוחת על כונן אמיתי במקום מוגבל. והקצה המהיר של הצי סוגר את הטיעון מהצד השני: אותה משימה של 87 GB, בקצב מלא ב-10 GbE, מסתיימת באותן 70-71 שניות על כונן של 1.24 GB/s ועל כונן של 5.97 GB/s - כונן מהיר פי 4.8 מזיז את הזמן באפס, כי במכפיל פי 1.0 הקו נגמר הרבה לפני שהדיסק נגמר. עבור קליינט דו-שלבי שני הכוננים האלה הם עולמות שונים.
מה המתקן הזה הוא, ומה הוא אינו. הדיסק הוגבל עם בקר קלט/פלט של מערכת ההפעלה בתוך מכונה וירטואלית על מכונת Apple Silicon עם 32 ליבות, וזרוע הדו-שלביות היא הבינארי שלנו עצמו שנעשה לכתוב, לקרוא-חזרה ולכתוב מחדש בדרך שבה קליינט דו-שלבי עושה. אף מתחרה לא רץ בו - הקו המדומה של המתקן מגיש קבצים פשוטים שמתחרה גם היה מטפל בהם במעבר אחד, כך שהפניית אחד אליו לא הייתה מדגימה שום דבר - מה שאומר שהטבלה שלמעלה היא חשבון מעוגן בזוג אחד נמדד, כשהמכפילים של המתחרים לקוחים מהטבלאות האמיתיות של חמשת הקליינטים שלמעלה, ואנחנו מתייגים אותה כך בכוונה. שלוש הערות יושר מתלוות אליה. הבקר מתקצב קריאות וכתיבות בנפרד, מה שמחמיא לזרוע הדו-שלבית; על התקן בעל תקציב יחיד, שהוא כל דיסק מסתובב, החלק שלה היה נמוך עוד יותר. מכפיל הדו-שלביות הוא כ-פי 2 כשהכרכים עדיין במטמון העמודים בזמן הקריאה-חזרה ופי 3 כשלא, כך שמשימה גדולה על מכונה רגילה יושבת בקצה הפי 3. ועלות החיפוש של כתיבה, קריאה-חזרה ומחיקה של מאות קבצי כרך - מול קובץ אחד שנכתב פעם אחת בסדר - היא טיעון מצורת התעבורה, לא מדידה עדיין: היא צריכה דיסק מסתובב, ואנחנו מצטטים אותה כטיעון עד שיהיה לה אחד.
צורה שנייה · הטלת המטבע של הפרסום הגדול
חצי מכל מה שמתפרסם מעל 60 GB הוא ארכיון מוצפן, וזו הצורה שבה קליינטים דו-שלביים משלמים הכי הרבה: הנתונים הנעולים צריכים להיכתב החוצה, להיקרא חזרה, להיפתח ולהיכתב שוב. nzbfast פותח כל חלק עם הגעתו, כך שהנתונים הנעולים אף פעם לא מגיעים לדיסק בכלל. נמדד על פרסום מוצפן אמיתי של 94 GB:
| פרסום מוצפן של 94 GB, מעבר אחד | נמדד |
|---|---|
| נכתב לדיסק | 90.1 GB - בערך המטען, פעם אחת |
| הכי הרבה דיסק בשימוש בו-זמנית | 89.6 GB - קובץ הפלט עצמו |
| השהיה אחרי ההורדה | 0.6 s |
הכי הרבה דיסק בשימוש בו-זמנית הוא גודל הקובץ שביקשתם. אין רגע במהלך הורדה מוצפנת שבו nzbfast צריך מקום לעותק שני, ואין מעבר פתיחה אחרי שמד ההורדה מתמלא - קליינט דו-שלבי משלם בערך כפול בשלוש השורות האלה, וזה אותו פי 2 שטבלאות העלות שלמעלה מודדות בכל צורה אחרת.
דיסק בשימוש במהלך הורדה אחת, נדגם כל חמש שניות. הקו השטוח הוא nzbfast; הקו שמטפס ל-166 GB בסוף הוא דפוס הכתיבה-החוצה-ואז-פתיחה, משלם עבור הקובץ המוגמר בזמן שהעותק הנעול עדיין על הדיסק - נמדד על ידי הרצת שני הדפוסים על אותו פרסום.
פרסומים מקוננים · נמדד ב-28 באוגוסט 2026
חלק גדול ממה שמתפרסם קשה לפתיחה במכוון. שם הקובץ האמיתי קבור בתוך ארכיון שני, לפעמים שלישי, לפעמים בפורמט אחר בכל רובד, כדי שהפרסום יסגיר כמה שפחות על מה שהוא מכיל. על כך מתווסף שפרסומים מגיעים פגומים: מאמרים פגים, העלאות נוחתות חלקיות, ויש להשתמש בנתוני השחזור לפני שאפשר לחלץ משהו בכלל. תוכנת הורדה או שעוברת את השרשרת הזו עבורכם, או שהיא מוסרת לכם תיקייה מלאת ארכיונים ועוצרת.
לכן בנינו עשר צורות שמבודדות בדיוק את זה, העמדנו מולן כל תוכנה עדכנית, ואז עשינו את מה שהשוואות בדרך כלל מדלגות עליו: היכן שתוכנה עצרה מוקדם, סיימנו את העבודה ידנית בכלים הסטנדרטיים ומדדנו גם את הזמן הזה. תוכנה שמוותרת מהר נראית מהירה עד שסופרים את העבודה שהיא משאירה לכם.
| עשר צורות עטופות ופגומות | סיימה בעצמה | רק לאחר תיקון ידני | לא הגיעה לקובץ מעולם |
|---|---|---|---|
| NZBGet 26.3 | 2 מתוך 10 | 8 | 0 |
| SABnzbd 5.1.2 | 5 מתוך 10 | 3 | 2 |
| nzbfast 1.2.4 | 10 מתוך 10 | 0 | 0 |
| rustnzb 1.4.5 | 7 מתוך 10 | 1 | 2 |
| Weaver 0.7.8 | 1 מתוך 10 | 1 | 8 |
nzbfast היא היחידה שמסיימת את כל העשר בלי עזרה. גם NZBGet מגיעה אל הקובץ בכל צורה, אך נדרשות לה 16 סבבים של תיקון וחילוץ ידניים בשמונה מהן. SABnzbd מסיימת חמש בכוחות עצמה, ושתיים נותרות בלתי נגישות אפילו ידנית. Weaver מגיעה אל הקובץ בשתיים.
התבנית אינה מקרית. הצורות ש-nzbfast עוברת והאחרות לא הן העטופות והפגומות: ארכיון בתוך ארכיון, החלפת פורמט באמצע השרשרת, שרשרת בת חמישה רבדים, ומעל הכול ארכיון שמגיע פגום ולצדו נתוני השחזור שלו עצמו. באחרונה, ארבע תוכנות מחלצות את המערך החיצוני בצורה מושלמת, מוסרות לכם את הארכיון הפגום יחד עם מערך השחזור שהיה מתקן אותו, ועוצרות.
היכן שהתוכנות משלימות את אותה עבודה, הפער אינו קטן. אלה שבע הצורות שכל ארבע התוכנות הנפוצות מגיעות אליהן, כולל התיקון הידני שכל אחת נזקקה לו:
| שבע הצורות שכל הארבע מגיעות אליהן | זמן עד קובץ שמיש | נכתב לדיסק |
|---|---|---|
| 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 |
פי ארבעה עד חמישה מהר יותר, בפחות ממחצית הבתים שנכתבו. נתון הדיסק הוא זה שממשיך להיות משמעותי אחרי ההורדה: כל ג'יגה-בייט בעמודה הזו הוא ג'יגה-בייט שהכונן שלכם נאלץ לקלוט, והתוכנות שמשתמשות באזור ביניים כותבות את התוכן, קוראות אותו בחזרה וכותבות אותו שוב.
היכן שאיננו מובילים, ומדוע ראוי לומר זאת. בארבע מתוך עשר הצורות מתחרה כותב פחות בתים מ-nzbfast במהלך ההורדה עצמה. בכל פעם משום שעשה פחות: בצורה עם הארכיון הפנימי הפגום, NZBGet כותב 3.29 GB לעומת 4.65 שלנו, ואז סבב התיקון שלו כותב עוד 2.91 ומסיים ב-6.20 GB לעומת 4.65 שלנו. באחרות, התוכנה שכתבה הכי מעט היא כזו שלא הגיעה אל הקובץ כלל. נתון דיסק נמוך אינו תמיד חיסכון.
אלה מבחני יכולת, לא מבחני מהירות. התכנים קטנים ומוגשים מהזיכרון דרך חיבור מקומי, בלי ספק וללא רשת בדרך, ולכן דבר כאן אינו מוגבל במהירות ההורדה והשניות המוחלטות קצרות בהרבה ממה שאותן צורות היו לוקחות במציאות. השאלה אם צורה דורשת עבודה ידנית בכלל היא תכונה של הצורה ושל התוכנה, והיא עוברת ישירות. השניות משוות בין תוכנות שמבצעות עבודה זהה; הן אינן חוזות כמה זמן תימשך משימה אמיתית.
התוצאות המלאות לכל צורה, מהי כל צורה, והשיטה נמצאים בעמוד הנתונים על ארכיונים מקוננים.
למה זה חשוב
אחסון פלאש מתבלה מכתיבה אליו. פרסום של 94 GB עולה לכונן שלכם כ-90 GB של כתיבה תחת nzbfast; תחת קליינט שעושה שלבים ופורק, אותו פרסום עולה בערך כפול. ב-NAS עם דיסקים קשיחים הצורה החד-מעברית גם מסירה את המעבר החד-הליכי הארוך בסוף כל הורדה מוצפנת - השהיה שנמדדה ב-20 שניות על תחנת עבודה מהירה עם 32 ליבות עם פתיחה מואצת-חומרה, וארוכה בהתאם על המכונות חלשות-ההספק שרוב האנשים בפועל מריצים את זה עליהן. אנחנו מצטטים את המספר הקטן כי הוא זה שמדדנו.
השוואות רכיבים
תיקון (PAR2) ופריקה (RAR) הם קוד ילידי משלנו ולא בינאריים ארוזים של צד שלישי, אז אנחנו גם מריצים אותם בעצמאות מול הכלים הייעודיים על קורפוסים זהים, על ארבע מכונות שמשתרעות על מה שקורא אולי באמת מחזיק. זמן נספר רק כשהפלט זהה בית-בית למטען המקור: כל מספר RAR למטה נבדק ב-sha256 מול המקור, וכל קובץ מתוקן מול המערך הטהור.
הסבב הקודם של
הטבלה הזו השתמש ב-100 MB עד 200 MB לכל צורה, וזו הייתה טעות: כ-28 ms של
הפעלת תהליך היו 40% ממקטע ה-store, והסדר שהם הפיקו לא שורד בגודל ריאלי.
הסבב הזה הוא 1 GB מטען לכל צורה, וזה משנה כמה תשובות, כולל כמה בכיוון
ההפוך. הארכיונים נוצרים על ידי rar 7.23 הרשמי, כך ששום כלי
לא נשפט על קלט מהמקודד שלו עצמו, ואותם בייטים מתחרים על כל מכונה.
מה שיש במטען חשוב יותר
משזה נראה. מטען בנוי מעותקי בלוקים הופך כל צורה דחוסה למבחן
העתקת-זיכרון; מטען של טקסט טהור הופך אותו למבחן ליטרלים-והפמן; מדדנו את
שניהם והם לא מסכימים מי מנצח. אז ארבע הצורות הדחוסות משתמשות בשלישים
שווים של טקסט, רשומות מובנות ובייטים בלתי-דחיסים, ושתי הצורות בקצוות
הטווח הזה הן מקטעים נפרדים בכוונה: store אינו דחיס
ו-repetitive הוא כמעט כולו התאמות. הבונה והמתקן נמצאים
במאגר, כך שאפשר לבנות מחדש את הקורפוס בית לבית.
הורץ מחדש 23 באוגוסט 2026 על המנוע 1.2.2, והסקירה עומדת. שלושת הכלים ששוקל קורא הכי הרבה - שלנו, unrar 7.23 ו-rarpar 0.2.5 - הורצו מחדש על שולחן העבודה עם 32 הליבות על מנוע השחרור (קוד החילוץ שהתחרה זהה בית-בית לתגית 1.2.2), שישה סבבים משולבים, מינימום לכל כלי, הפלט של כל מקטע נבדק מול מניפסט המטען. שניות, נמוך יותר טוב יותר:
| מטען של 1 GB, 32 ליבות (23 באוגוסט 2026) | store | 400 קבצים קטנים | solid | repetitive | גדול, 3 כרכים | מוצפן | מילון 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 |
כל שבע הצורות שלנו, במינימום ובחציון, פי 1.16 עד פי 4.29 מול unrar. הזמנים האלה לא ברי-השוואה תא-לתא עם הטבלה הרחבה יותר למטה - המתקן עודכן מאז הסבבים של אותה טבלה ומספרי הסבבים שונים - כך שכל טבלה נקראת מול עצמה. הטבלה הרחבה שומרת על התאריכים שלה עצמה ועל שדה ששת הכלים שלה, ועמודת ה-nzbfast שלה מתארת את המנוע ש-1.2.2 שולח: המרוץ החוזר שלמעלה מדד את רמת המנוע הנוכחית מול הבנייה של אותה טבלה על כל שבע הצורות, הוכרע לפי ספירת פקודות חומרה (0.14% פחות לאותו זמן), כך שהתאים האלה אינם מספרים של בנייה שהוחלפה עם תווית עדכנית. המרוץ החוזר הזה הוא גם המקום שבו כלל ה-A/A במדור המערך הרוויח את מקומו. מעבר של אותו יום דיווח לראשונה על צורה אחת כנסיגה קטנה מול הבנייה הקודמת שלנו עצמנו, והקריאה שרדה הרצה של שני סדרי הזרועות. בקרת A/A - אותו בינארי מתחרה מול עותק זהה-בית של עצמו - הראתה את המתקן נותן לזרוע שרצה ראשונה קנס של כ-1.5%: הבינארי הזהה ניצח רק 6 מתוך 15 סבבים מהמשבצת הראשונה, והחלפת סדר לא מבטלת הטיה שנוחתת תמיד על מי שראשון. ספירות פקודות החומרה הכריעו את השאלה שהמתקן לא יכול: הבנייה החדשה יותר מוציאה לפועל 0.14% פחות פקודות לאותו שעון קיר, כך שלא הייתה נסיגה. כל השוואת בנייה-שלנו-מול-בנייה-שלנו שאנחנו מפרסמים עכשיו נושאת את הבקרה הזו.
כל השדה, שניות, נמוך יותר
טוב יותר. הטוב מבין שלוש, הכלים משולבים בתוך כל סבב במקום לרוץ
בבלוקים, הפלט נבדק מול מטען המקור בכל הרצה בודדת. כלי שהפיק בייטים
שגויים מקבל הערת נכונות, אף פעם לא זמן מהיר. rarpar הוא
קוד ה-RAR וה-PAR2 של Weaver עצמה, נבנה מהמקור ב-bd87611;
אנחנו מצמידים את ה-commit ולא גרסה כי החבילות (crates) שלו נושאות
שלושה מספרי גרסה שונים.
| שניות, 1 GB לכל צורה | store | 400 קבצים קטנים | solid | repetitive | גדול, 4 כרכים | מוצפן | מילון 128 MiB |
|---|---|---|---|---|---|---|---|
| שולחן עבודה high-end, 32 ליבות | |||||||
| 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 | פלט שגוי² | אין הצפנה³ | אין מילון גדול⁴ |
| 7-Zip | 0.30 | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ |
| שולחן עבודה ישן יותר, 20 ליבות | |||||||
| 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 | פלט שגוי² | אין הצפנה³ | אין מילון גדול⁴ |
| 7-Zip | 0.33 | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ | לא נתמך¹ |
| לפטופ, 14 ליבות / 20 תהליכונים, 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 | אין CLI⁵ | אין CLI⁵ | אין CLI⁵ | אין CLI⁵ | אין CLI⁵ | אין CLI⁵ | אין CLI⁵ |
| bsdtar | 0.81 | 16.72 | 15.14 | 1.13 | פלט שגוי² | אין הצפנה³ | אין מילון גדול⁴ |
| 7-Zip | 0.76 | 5.45 | 5.79 | 0.65 | 4.21 | 4.13 | 2.51 |
| לפטופ, 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 |
היכן שהשדה לא הצליח
להתחרות, ולמה. ¹ ה-7-Zip שמתחרה כאן הוא חבילת Homebrew, שמסרבת לכל
צורה דחוסה עם ERROR: Unsupported Method וקוראת רק את
הצורה המאוחסנת ב-macOS. גרסה קודמת של העמוד הזה תלתה זאת בבנייה של
7-Zip ל-macOS, מה שהיה שגוי: Homebrew בונה אותו בלי הקודק unRAR
הלא-חופשי, בזמן שבניית ה-macOS ש-7-zip.org משחררת נושאת את הקודק
ומפענחת את כל שבע הצורות, כמו בניית Windows. נמדד מחדש 14 באוגוסט 2026.
אם אתם מתקינים את 7-Zip מהפרויקט ולא מ-Homebrew, העמודה הזו לא מתארת
את מה שיש לכם. ² ל-bsdtar אין תמיכה ב-RAR5 מרובה-כרכים והוא הפיק קובץ
קטוע בלי לדווח שגיאה, כך שהמקטע הזה הוא כשל נכונות ולא זמן איטי; המתקן
שלנו תפס את זה על ידי בדיקת הפלט, וזו הסיבה שכדאי לבדוק את הפלט. ³
bsdtar: Encryption is not supported. ⁴
bsdtar: Declared dictionary size is not supported. ⁵
unar לא משחררת שום כלי שורת-פקודה ל-Windows, כך ששדה הלפטופ הוא חמישה.
⁶ קבוצת ה-M5 Max מריצה את שלושת הכלים שקורא ב-macOS באמת היה פונה
אליהם - unrar, rarpar ואנחנו; unar, bsdtar ו-7-Zip לא
התחרו על המכונה הזו. ה-unrar שלה הוא 7.22, הבנייה החדשה ביותר שרצה שם
ללא השגחה.
כל צורה על כל מכונה חוץ
מאחת, וזו תיקו. צורות ההתאמה-הקצרה מגיעות לשני דברים ספציפיים
במפענח שלנו. התאמה של שניים עד שלושים ושניים בייטים נהגה לשלם עבור
קריאה מלאה לשגרת העתקת-הזיכרון של הפלטפורמה, והקריאה עלתה יותר
מההעתקה; העתקת שלושים ושניים בייטים קבועים דרך רגיסטר במקום זאת היא
הסיבה ש-repetitive, solid ומילון ה-128 MiB -
שלוש הצורות הבנויות מהתאמות קצרות - כולן מהירות בבת אחת. והצ'קסום רץ
במורד הזרם של תהליכון הכותב ולא עליו. התא היחיד שאיננו מנצחים בו באופן
מוחלט הוא הצורה המאוחסנת בשולחן העבודה עם 32 הליבות, שבו unrar ואנחנו
במרחק שלוש מילישניות זה מזה במקטע שהוא טהור הזזת בייטים - זהה ברמת
הדיוק של הטבלה הזו, כך ששני התאים מסומנים וזה מקבל ציון תיקו, לא הפסד
ולא ניצחון.
הצורה שבה אנחנו מנצחים הכי
הרבה היא זו שיוזנט באמת מפרסמת מאות ממנה בכל פעם: 400 קבצים קטנים,
פי 4.3 ופי 4.4 מול unrar ופי 5.4 עד פי 5.5 מול rarpar.
זו מקביליות לפי-חבר, וזה ההבדל בין מחלץ שנכתב לתור הורדות לבין אחד
שנכתב לשורת פקודה. הצורה המאוחסנת, שהמפקד שלמעלה
אומר שהיא 84% מהבייטים על הקו, היא כמעט תיקו עבור שלושת הכלים
הרציניים, כי בשלב הזה כולם פשוט מזיזים בייטים.
בחירה אחת ששווה להצהיר עליה. הארכיונים ארוזים כשהדחוס מוצמד לארבעה תהליכונים. פיצול הבלוקים של RAR אחרת עוקב אחרי מספר הליבות של המכונה שארזה את הארכיון, כך שמכונה עם 32 ליבות ומכונה עם 20 ליבות מייצרות בייטים שונים מאותו קלט והמכונות מפסיקות להיות ברות-השוואה. הצמדה הופכת את קורפוס החילוץ לזהה-בית בכל מקום, וזו הנקודה, אבל היא גם מגבילה כמה מהפענוח יכול לרוץ במקביל - אז כששתי הצורות הקרובות ביותר היו הפסדים הרצנו אותן מחדש מול ארכיונים שנארזו עם כל 32 התהליכונים, כדי לבדוק שההצמדה לא הייתה הגורם. היא לא הייתה: solid זזה מ-4.2% מאחור ל-2.4% מאחור ומילון ה-128 MiB מ-6.6% ל-6.3%, אותו סדר בשני המקרים. שתיהן עכשיו ניצחונות בקורפוס המוצמד במרווח רחב יותר ממה שהבדיקה הזו יכלה להסביר.
למה אין שורת RAR4, ומה
קורה לפרסומים האלה. כל צורה שלמעלה היא RAR5 או RAR7, וזה מה
שיוזנט מפרסמת היום. ארכיוני RAR4 ישנים יותר עדיין צצים, ואותו מנוע
קורא אותם, כולל הצורות הדחוסות והמוגנות-בסיסמה, באותו מעבר יחיד כמו
החדשים יותר במקום לכתוב את הכרכים לדיסק ולפרוק אותם אחר כך. הם לא
מקבלים שורה כאן כי rar 7.23 הרשמי כבר לא יכול ליצור RAR4,
כך שאין קורפוס ניטרלי להתחרות בו על השדה; העבודה הזו נבדקת מול
ארכיונים שנכתבו על ידי WinRAR 3.00 במקום זאת, בית בבית מול unrar.
קורפוס: 1 GiB של מטען אקראי ארוז במצב store לתוך 21 כרכי RAR, ואז שני מערכי PAR2 ברדונדנטיות של 10%, אחד בבלוקים של 1 MiB ואחד ב-64 KiB, ואז מפות נזק קבועות. כל הרצה משתמשת באותו פרוטוקול: עותק טרי, קריאת הקורפוס כולו פעם אחת לחימום המטמון, ואז תזמון. הטוב מבין שלושה סבבים משולבים; כל כרך מתוקן מושווה מול המערך הטהור בכל סבב. נמוך יותר טוב יותר.
תיקון לגבי הקורפוס, כי גרסה קודמת של העמוד הזה הגזימה בו. אמרנו שכל מכונה הריצה קורפוס זהה-בית, נבדק בגיבוב. גיבוב כל כרך בכל מערך מראה שזה נכון לגבי שולחן העבודה עם 32 הליבות ולפטופ ה-Windows, שתואמים בדיוק, ולא לגבי שולחן העבודה עם 20 הליבות, שמחזיק הגרלה אקראית שונה של אותה צורה: אותם 21 כרכים באותם גדלים, אותם שני גדלי בלוק, ונזק מאומת באותם 3, 101 ו-1,500 בלוקים פרושים על פני אותו מספר קבצים. כל מספר בתוך שורה עדיין נמדד על בייטים שכל כלי באותה שורה חולק, וזה מה שכל השוואה נשענת עליו. אבל השורות אינן ארבע תצוגות של קלט אחד, ומכיוון שאופי המטען שווה כ-7% לסריקה של מתחרה אחד, זה שווה הצהרה ולא טשטוש.
איזה par2 הוא איזה.
par2cmdline המקורי הוא היישום הייחוס שכולם פיצלו ממנו.
par2cmdline-turbo הוא הפיצול שמארח את הגרעינים המכתובים
ביד ב-SIMD של שדה גלואה של ParPar: זה בדיוק מה ש"טורבו" אומר,
וזו הסיבה שטורבו, ולא המקורי, הוא הכלי ששווה למדוד מולו. שתי עמודות
הטורבו למטה מריצות את אותם גרעיני ParPar. מה שמפריד ביניהן הוא לא
החשבון אלא הבנייה והדגלים.
אושר על בניית השחרור מול
המתחרה העדכני, 24 באוגוסט 2026. הטבלאות האלה נמדדו לפני שנחתכה
1.2.2 ולפני ש-par2cmdline-turbo שחררה 1.5.0 (20 באוגוסט
2026), כך שעמודת 20 הליבות הורצה מחדש על שתיהן: בניית השחרור 1.2.2
שלנו מול טורבו 1.5.0, שלושה סבבים משולבים לכל מקטע, כל קובץ מתוקן
מושווה מול המערך הטהור. כל ארבעת המקטעים משוחזרים - שלנו 0.18 / 0.30 /
0.75 / 2.02 מול ה-0.19 / 0.33 / 0.74 / 2.07 המודפסים כאן, וטורבו 1.5.0
נוחת בתוך כמה אחוזים מהבנייה שבטבלה בכל מקטע ובשתי התצורות. התאים
עומדים כפי שפורסמו; שלוש המכונות האחרות שומרות על התאריכים שלהן עצמן.
אז המתחרה מופיע פעמיים,
ואחת מהעמודות האלה היא המקרה הטוב ביותר שלו ולא ברירת המחדל שלו.
הבינארי המשוחרר שהייתם מורידים מקומפל למעבד בסיסי גנרי ומגבב רק כמה
קבצים בכל פעם; בניית אותו מקור למעבד המארח האמיתי והעברת
-T16 נותנת לו להשתמש בפקודות שלמכונה הזו יש באמת ולגבב
שישה עשר קבצים בבת אחת. בלפטופ זה שווה עד פי 2.6, כולו מבנייה ומדגלים.
שפטו אותנו על העמודה המכוונת, שהיא ההשוואה הקשה יותר; העמודה
כפי-שנשלח היא מה שמישהו שמוריד אותו באמת חווה. par2cmdline
הוא המקורי, גרסה 1.2.0, נבנה מהמקור על כל מכונה. rarpar
הוא יישום ה-PAR2 של Weaver עצמה, נבנה מהמקור עם קצה ה-GPU מסוג Metal
שלו מופעל. ה-par2j של MultiPar הוא Windows-בלבד, כך שהוא
מופיע רק בשורות לפטופ ה-Windows. שורות ה-M5 Max מריצות את שני הכלים
עם בניות arm64 עדכניות ל-macOS לצד שתי עמודות הטורבו;
par2cmdline הקלאסי לא התחרה על המכונה הזו.
| שניות, מערך של 1 GiB | שולחן עבודה, 32 ליבות | שולחן עבודה, 20 ליבות | לפטופ, 14 ליבות | לפטופ, M5 Max |
|---|---|---|---|---|
| ללא נזק - אימות נקי | ||||
| nzbfast | 0.11 | 0.19 | 0.23 | 0.18 |
| par2-turbo, מכוונן | 0.31 | 0.38 | 0.42 | 0.28 |
| par2-turbo, כפי שנשלח | 0.86 | 1.12 | 1.06 | 0.80 |
| par2cmdline | 3.03 | 3.84 | 3.81 | לא התחרה |
| rarpar | 2.62 | 3.45 | 2.96 | 2.32 |
| MultiPar | Windows בלבד | Windows בלבד | 1.34 | Windows בלבד |
| 3 בלוקים פגומים - כמה מאמרות מתות | ||||
| nzbfast | 0.22 | 0.33 | 0.46 | 0.26 |
| par2-turbo, מכוונן | 0.51 | 0.66 | 0.78 | 0.48 |
| par2-turbo, כפי שנשלח | 1.08 | 1.46 | 1.42 | 1.00 |
| par2cmdline | 3.64 | 4.58 | 4.98 | לא התחרה |
| rarpar | 4.27 | 5.53 | 4.99 | 3.64 |
| MultiPar | Windows בלבד | Windows בלבד | 1.71 | Windows בלבד |
| 101 בלוקים פגומים | ||||
| nzbfast | 0.48 | 0.74 | 0.96 | 0.66 |
| par2-turbo, מכוונן | 0.88 | 1.17 | 1.40 | 0.85 |
| par2-turbo, כפי שנשלח | 2.04 | 2.65 | 2.69 | 1.84 |
| par2cmdline | 5.57 | 7.57 | 11.7 | לא התחרה |
| rarpar | 4.73 | 5.73 | 5.74 | 4.17 |
| MultiPar | Windows בלבד | Windows בלבד | 2.65 | Windows בלבד |
| 1,500 בלוקים פגומים - 91% מהשחזור בשימוש | ||||
| nzbfast | 1.00 | 2.07 | 2.46 | 1.61 |
| par2-turbo, מכוונן | 3.00 | 5.52 | 6.73 | 4.07 |
| par2-turbo, כפי שנשלח | 5.21 | 8.20 | 9.30 | 6.01 |
| par2cmdline | 67.7 | 86.1 | 403 | לא התחרה |
| rarpar | 7.15 | 11.49 | 14.22 | 6.91 |
| MultiPar | Windows בלבד | Windows בלבד | 5.40 | Windows בלבד |
כל שישה עשר תאי nzbfast - ארבע מכונות בארבע רמות נזק - הם שלנו, כמה מהם ביותר מפי 2 מול הבנייה המכוונת ובפי 2.3 עד פי 7.7 מול זו שהייתם באמת מורידים. תאי הנזק הכבד הם המעניינים, וההערה למטה מסבירה את האלגוריתם שמאחוריהם.
המקורי חזר לטבלה, וכדאי
לראות למה הפיצול קיים. גרסה קודמת של העמוד הזה הסירה את עמודת
par2cmdline בטענה שהיא הייתה איטית יותר מכל השאר בסבב,
וזה נכון ולא סיבה מספיק טובה: זה היישום שכמעט כל כלי אחר צאצא ממנו,
וקוראים ראויים לקו הבסיס במקום לטענה שלנו עליו. ברמת הנזק הכבדה ביותר
זה לוקח כ-69 s שבו הפיצול ה-SIMD לוקח 3.2 s ואנחנו לוקחים 3.1 s.
המקדם עשרים הזה הוא כל הטיעון עבור הגרעינים המכתובים ביד של שדה
גלואה, וזה אותו טיעון שאנחנו עושים עבור שלנו.
נזק קל הוא המקרה שחשוב. כמה מאמרות שנכשלו הרבה יותר טיפוסי מ-101 בלוקים מתים, ולא כלום כמו 1,500. רוב תיקון קל אינו מתמטיקת Reed-Solomon בכלל, זו קריאה וגיבוב MD5 של גיגה-בייט, וזו הסיבה ששורת 3 הבלוקים עוקבת אחרי שורת האימות-הנקי ולא אחרי שורות התיקון.
רמת הנזק הכבדה ביותר היא סוג עבודה שונה, והיא מקבלת אלגוריתם שונה. הרמה האחרונה הזו פוגעת ב-1,500 בלוקים על פני כל 21 הכרכים וצורכת כ-91% מנתוני השחזור, וזה המקום שבו החשבון של Reed-Solomon, ולא הגיבוב או הדיסק, הופך כמעט לכל העבודה. בניית השחרור מחשבת את התיקונים הכבדים ביותר עם התמרה תורת-מספרית במקום קיפול שדה-גלואה הקלאסי - אותה מתמטיקה, מוערכת בצורה שמתרחבת הרבה יותר טוב במספרי בלוקים גבוהים: פי 2.7 לפני הבנייה המכוונת בשולחן העבודה עם 20 הליבות, ובלפטופ ה-Windows פי 2.7 לפני הבנייה המכוונת ופי 2.2 לפני MultiPar. נזק קל עדיין רץ בנתיב הקלאסי, וזו הסיבה שהרמות האחרות בקושי זזו: ההתמרה משתלמת רק מעל כ-512 בלוקים פגומים, כך שמתחת לזה המתזמן לא משתמש בה.
נתיב מהיר יותר שווה רק אם הוא לא יכול להיות שגוי. שני הנתיבים מחשבים את אותה כמות והם זהים-סיבית מבנייתם, וכל תיקון בעמוד הזה נשער מול הקבצים שנבנו מחדש תואמים למערך הטהור: 228 תיקונים מתוזמנים על פני המכונות בסבב הזה, אפס אי-התאמות. בניית השחרור לא נשענת על השיא הזה. כל תיקון מאמת את הפלט שלו עצמו מול גיבובי הקבצים, ואחד שנכשל יבוצע מחדש אוטומטית בנתיב הקלאסי, ירשום ביומן את הסטייה, וישמור על הנתיב הקלאסי לשארית ההרצה הזו. ההגדרה נמצאת בלוח המחוונים בתור מצב PAR מהיר אם הייתם מעדיפים לא להחזיק אותה בכלל, ומכונות עם מעט מדי זיכרון עבורה מסרבות לה מעצמן במקום לנסות ולהיכשל. נמדד מחדש ב-2 באוגוסט על הבנייה הנוכחית: שני שולחנות העבודה נוחתים בתוך כמה אחוזים מהטבלה הזו, ועם מצב PAR מהיר כבוי שולחן העבודה עם 20 הליבות נופל בחזרה בדיוק לזמן האיטי יותר של הנתיב הקלאסי, וזה מה שאומר שהניצחון הוא השיטה ולא התנאים.
עמודת לפטופ ה-Windows
הזדקקה לתיקון, והוא פועל נגדנו. Windows מוריד עבודת רקע מתמשכת
לליבות היעילות שלו אחרי כמה שניות. הדימון שלנו יוצא מכך בהפעלה ושום
כלי אחר לא יכול, כך שגרסה קודמת של העמוד הזה פרסמה את הזמנים
המוגבלים שלהם כאילו היו הזמנים של הכלים עצמם. הרצה חוזרת של המכונה
הזו עם כל כלי מורם לעדיפות גבוהה מזיזה את כל השדה: ברמת הנזק הכבדה
ביותר par2-turbo זז מ-22.4 s ל-6.41 ו-rarpar מ-59.2 s ל-14.4, ובחתך
אחד של העמוד הזה זה הפך את העמודה משלנו לכזו שאיבדנו. עמודת הלפטופ
כולה נמדדת כך עכשיו - התיקון נשאר גם ששורה זו נכבשה מחדש מאז על ידי
שינוי האלגוריתם שלמעלה, כי הזמנים של השדה על המכונה הזו הוגנים רק
כשההגבלה מוסרת.
כש-PAR2 לא יכול
לכסות את הנזק, רשומת השחזור בתוך ה-RAR עצמו היא קו ההגנה האחרון. עד
1.0.8 שלנו נכשל בכל ארכיון מעל כ-13 MB, כך שהמקטע הזה לא היה יכול לרוץ
בכלל. הנזק הוא שלושה חורים של 3,000 בייט ב-20%, 50% ו-80% דרך האזור
המוגן. שני הכלים הפיקו פלט זהה בית-בית לקובץ הטהור, ושלנו זהה בית-בית
למה ש-rar r עצמו כותב. הטוב מבין שלושה, שולחן עבודה עם 32
ליבות, שני הכלים הורצו מחדש יחד ב-2 באוגוסט.
| 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 |
| יתרון | 5.7× | 7.9× | 8.2× | 5.7× | 4.2× |
גרסה קודמת של העמוד הזה הראתה את הגודל 512 MB כהפסד, והסבירה אותו כמחיר של עבודה דרך הכרך בחלקים במקום להחזיק את כולו בזיכרון. ההסבר הזה היה נכון אז ומיושן עכשיו: העלות הייתה CRC64 סיבית-טורית בנתיב התיקון, שהוחלפה באחת מונחית-טבלה, וההפסד הלך איתה. אין יותר הצטלבות, ומערך העבודה החסום נשמר. הגודל 2 GB נמצא כאן כי הכרכים שדימון באמת פוגש הם 8 GB עד 20 GB, לא 512 MB, ומקטע שנעצר מתחת לטווח האמיתי הוא לא הרבה מבחן.
מה הזיז את החתך הזה,
והבקרה שאומרת כך. מציאת אילו בלוקים פגומים הפכה לשלב הגדול ביותר
בתיקון הזה - גדול יותר מחשבון התיקון עצמו - והיא רצה על תהליכון יחיד,
קוראת 64 KB מכל קבוצה על פני הקובץ, פעם אחת לקבוצה. היא עכשיו עושה
מעבר סדרתי אחד בסדר הקובץ עם צ'קסומים לפי-רסיס מחושבים במקביל, והכרך
המתוקן משוכפל ולא מועתק היכן שמערכת הקבצים יכולה לעשות זאת. האיתור
לבדו ירד מכ-300 ms ל-18 ms בארכיון של 512 MB, וזה רוב מה שזז למעלה.
הבקרה היא העמודה לצד שלנו: rar r הורץ מחדש באותם סבבים
על אותה מכונה וחזר בתוך כמה אחוזים מהזמנים הקודמים שלו, כך שהשינוי
בפער הוא שלנו ולא של הספסל.
ה-M5 Max חוזר על הדפוס,
התחרה 31 ביולי עם אותו קורפוס ואותם שערים: 0.050 / 0.066 / 0.171 /
0.581 s מול ה-0.211 / 0.335 / 0.751 / 1.735 של rar r על
פני הגדלים 16 MB עד 512 MB - מהיר פי 3.0 עד פי 5.1; הגודל 2 GB לא
התחרה על המכונה הזו. המספרים האלה קודמים לשכתוב האיתור שתואר למעלה,
כך שהם של הבנייה הישנה יותר, נשמרים כאן כמכונה השנייה ולא כמספר
עדכני.
rarpar של
Weaver נעדר מהטבלה הזו בלבד, ולא מבחירה: הוא לא מיישם את התיקון הזה.
כשמתבקש לתקן אחד מהארכיונים האלה הוא עונה "embedded Rar5 recovery
record detected ... this API restores standalone .rev recovery
volumes only and does not consume embedded RR/protect data",
ומשאיר את הקובץ פגום. הוא מופיע בכל השוואה אחרת בעמוד הזה: כל ארבעת
מקטעי ה-PAR2 שלמעלה, כל שבע צורות החילוץ מעל זה, ומקטע כרכי-השחזור
מיד למטה, שהיא העבודה שהוא אומר שהוא עושה - ואותה הוא מנצח.
.rev חסרים שלמיםהחצי השני של
סיפור השחזור העצמי של RAR, ועד הסבב הזה ההפסד הגדול ביותר בעמוד הזה.
קובץ .rev הוא כרך שחזור עצמאי: שלושה מהם לצד מערך של 21
כרכים יכולים לבנות מחדש כל שלושה כרכים שאף פעם לא הגיעו. קורפוס:
1 GiB מאוחסן לתוך 21 כרכים של 50 MB עם rar rv3, ואז
כרכים 4, 11 ו-19 נמחקו - שלושה אבודים מול שלושה כרכי שחזור, שזה המקרה
הגרוע ביותר שהמערך עדיין יכול לשרוד. הטוב מבין שלושה, כל כרך שנבנה
מחדש מושווה מול הטהור.
| שולחן עבודה, 32 ליבות | שולחן עבודה, 20 ליבות | |
|---|---|---|
| nzbfast | 0.44 | 0.50 |
rar 7.23 rc | 0.46 | 0.58 |
rarpar restore-volumes | 0.48 | 0.61 |
התא של 32 הליבות כאן היה
3.12 s מול ה-0.47 של rar rc בחתך האחרון של העמוד הזה,
פורסם כאיטי פי 6.6 והמספר הגרוע ביותר עליו. הסיבה הייתה פתרון
המחיקה רץ בכ-48 MB/s של פלט שנבנה מחדש שבו RARLab ניהלה 320; זה עכשיו
רץ על אותו חשבון מונחה-טבלה כמו שאר קוד השחזור, וזה שיפור פי שבעה
והופך את ההפסד לניצחון בשתי המכונות. המרווחים הם 3% ו-14%, כך שזה
ניצחון שכדאי להצהיר עליו בפשטות ולא לכותרת, והסיבה שהוא מוצהר בכלל
היא שההפסד הוצהר קודם.
המקטע הזה קיים כי
rarpar של Weaver מיישם בדיוק את זה וביקש להימדד עליו.
הוא ניצח בנוחות כשפרסמנו אותו לראשונה, ופרסמנו אותו אז מהסיבה הזו.
התאמת הקבצים אף פעם לא הייתה העלות, וכדאי לרשום זאת כי זה היה החשוד האינטואיטיבי: כרכי שחזור לא נושאים שמות קבצים, כך שאנחנו מזהים אילו משבצות שרדו על ידי גיבוב כל כרך על הדיסק במקום לסמוך על איך שהם נקראים, ומול מערך לא-פגום, שבו התאמה היא כל מה שקורה, המעבר כולו לוקח 0.18 s.
מה עוד זז, והיכן זה לא מוצג. נחתו שני שינויי מנוע נוספים שהקורפוסים האלה לא יכולים לראות, רשומים כאן כדי שהמספרים למעלה לא ייקראו כל הסיפור: ארכיוני RAR5 עם עשרות אלפי חברים פותרים כל חבר פעם אחת במקום להלך על הרשימה לכל עובד, וזה פי 3 פחות זמן מעבד ב-40,000 חברים; וקורא הביטים של RAR1.3 עובד מילה בכל פעם, וזה פי 2. אף אחד מהם לא מופיע למעלה, כי לצורות כאן יש 400 חברים ובלי RAR1.3.
מה שאנחנו בכוונה לא עושים: אנחנו אף פעם לא יוצרים PAR2. למוריד אין סיבה לכך, ו-ParPar מחזיקה במקטע הזה. אנחנו גם קונים מהירות בזיכרון בשני המנועים: החילוץ מגיע לשיא של סביב 240 MB מול 41 MB של unrar, והאימות סביב 126 MB מול 7 MB של טורבו, כי אלה המנועים המשולבים שרוכבים על הורדה חיה ולא ריצות עצמאיות חד-פעמיות. צורת מילון ה-128 MiB היא הגרועה ביותר מבחינה זו, בכ-304 MB מול 139 MB של unrar. התיקון הכבד ביותר עולה עכשיו זיכרון גם הוא: השיטה המהירה יותר עבור 512-ומעלה בלוקים חסרים עובדת מנתוני השחזור שמוחזקים שוכנים, כך שהיא מורשית עד רבע מה-RAM של המכונה, מוגבלת ב-4 GB, ומכונה שלא יכולה לוותר על כך שקטה לוקחת את שיטת הזיכרון-הנמוך במקום זאת - אותו חשבון ואותם זמנים כמו השורות האמצעיות של טבלת ה-PAR2, פשוט לא פי 3 על האחרונה. אם אתם רוצים את הקבוצה השוכנת הקטנה ביותר האפשרית למשימה עצמאית, הכלים הייעודיים עדיין מנצחים בעמודה הזו.
יכולת, לא מיקרו-בדיקות
| nzbfast | SABnzbd 5 | NZBGet 26 | rustnzb | Weaver | Usenapp | Newsbin | |
|---|---|---|---|---|---|---|---|
| NNTP בצנרת | כן | כבוי כברירת מחדל | לא | כן | -&sup7; | - | - |
| אימות מלא במהלך ההורדה | כל בלוק | אחרי | בדיקה-מהירה | אחרי | אחרי | אחרי | אחרי |
| חילוץ במהלך ההורדה | בזרם, בלי כרכים בדיסק | פריקה ישירה&sup4; | פריקה ישירה&sup4; | שלבים, ואז פורק&sup5; | לא | לא | לא |
| דיסק נדרש לפרסום של N GB | ~פי 1×N | ~פי 2×N | ~פי 2×N | ~פי 2×N | ~פי 2×N | ~פי 2×N | ~פי 2×N |
| פסק דין על השלמות לפני ההורדה | מדויק-בלוק | לא | אחוז בריאות | לא | -&sup7; | בדיקת מאמרה | לא |
| זיכרון תחום (אף פעם לא swap) | תוקצב | הגדרת הגבלת-מטמון | הגדרת מטמון | לא | לא | - | - |
| מעלה את מגבלת הקבצים-הפתוחים שלו | כן, בהפעלה | -&sup8; | -&sup8; | -&sup8; | -&sup8; | -&sup8; | -&sup8; |
| בדיקת הקובץ בכל שלב במהלך ההורדה | כן | לא | לא | לא | לא | רציף | לא |
| אינדקסר מובנה + קיר פוסטרים | כן, בלי מפתח | לא | לא | לא | לא | ממשק חיפוש | דפדפן קבוצות |
| תחליף ל-Sonarr/Radarr | API של SAB + Newznab | ילידי | ילידי | API תואם-SAB | RPC תואם-NZBGet&sup7; | לא | לא |
| שלטים לטלפון (nzb360/LunaSea) | כן | כן | כן | לא | -&sup7; | לא | לא |
| רשימת מעקב אוטומטית + שדרוגים | מובנה | דרך *arr | דרך *arr | לא | לא | Watchdog | כללים |
| בינארי עצמאי יחיד | כן | חבילות אפליקציה; Python בלינוקס | כן | כן | כן | .app | .exe |
| קוד פתוח | GPL&sup6; | GPL | GPL | MIT | כן | בתשלום | בתשלום |
| פלטפורמות | mac/win/linux (x64 + ARM)/docker/flatpak | mac/win/linux/docker/חבילות NAS | mac/win/linux/docker/NAS + embedded | linux/win (mac מהמקור) | בינארי mac; מקור במקום אחר&sup7; | mac בלבד | win בלבד |
&sup4; פריקה ישירה עדיין מממשת את הכרכים קודם: פי 2 כתיבות ופי 2 דיסק. &sup5; rustnzb 1.4.5 מספק כל תרחיש נכון בית-בית בסבב מ-23 באוגוסט 2026, וקלט/פלט הדיסק הנמדד שלו שם הוא כ-פי 2.1 מהמטען - כך שהוא עושה שלבים לכרכים ופורק אחרי ההורדה במקום לחלץ בזרם (ראו טבלאות העלות). הבניות הישנות יותר שלו (1.3.4-1.3.9) שלחו כרכים מעורפלים מסומנים "Completed" בלי לחלץ; הכשל הזה תוקן במעלה הזרם ב-1.4.5. &sup6; GPL-3.0-or-later. &sup7; Weaver 0.7.8, הבינארי המשוחרר האחרון שלו, זהות מוכחת בגיבוב (ה-sha256 של חבילת השחרור המפורסמת והבינארי בתוכה תואמים את מה שאנחנו מריצים); השורות הנמדדות שלו מגיעות מסבב העלות של 23 באוגוסט, תאי היכולת שלו מסומנים "-" הם תכונות שלא הערכנו ולא היעדרויות מאושרות; הוא מדבר RPC תואם-NZBGet, וכך המתקן שלנו מפעיל אותו, אבל לא ניסינו את השלטים לטלפון מולו. Usenapp/Newsbin הם קוראים מסחריים חד-פלטפורמיים עם תכונות מוריד; הם רשומים כי אנשים שואלים, לא כי הם מתחרים על מהירות.
&sup8; macOS מתחיל תוכנית עם מגבלה של 256 קבצים פתוחים, ומערך מלא של חיבורים על פני כמה שרתים יכול לעבור אותה. nzbfast מעלה את המגבלה שלו עצמו בהפעלה ב-macOS ובלינוקס: הוא מבקש 65,536, יורד בדרגות עד שהמערכת מסכימה, אף פעם לא עולה מעל המגבלה הקשיחה של המערכת, וממשיך עם מה שהיה לו אם כל שלב מסורב. ל-Windows אין מגבלה מסוג זה לכל תהליך. העמודות האחרות הן לא מוערכות ולא היעדרויות מאושרות: לא קראנו את קוד ההפעלה של שום קליינט אחר. שווה לדעת בגלל איך זה נכשל: תוכנית שנגמרים לה קבצים פתוחים באמצע משימה נוטה להיעלם במקום לדווח שגיאה.
הוכחת תעבורה · נמדד על 1.2.2
חתכים קודמים של העמוד הזה נשאו מערך רחב יותר של הדגמות תעבורה - הרצות רוויה מרובות-קווים, רווחי צנרת לפי-RTT, הוכחת לחץ-נגד, מדידות תקרת-פענוח - שהתחרו על בניות ש-v1.2.2 החליפה מאז. תחת כלל העמוד הזה הן פורשות במקום להישאר להזדקן, וחוזרות כשהן נחתכות מחדש על השחרור הנוכחי; שלוש הטענות שלמעלה הן אלה שכבר נמדדו מחדש על v1.2.2.