7-zip Benchmark um 17% beschleunigt

Als ersten Härtetest für Fiber Pool habe ich die Bibliothek in das beliebte 7-zip eingebunden.

Durch den gut gegliederten Source-Code war es relativ einfach möglich, das vorhandene Multithreading durch die Fiber Pool-Technik zu ersetzen. In der Fiber Pool API fehlte leider noch einiges, um eine reibungslosere Portierung zu ermöglichen. Daher war ich gezwungen, die fehlenden Dinge mit heisser Nadel dazuzustricken, um den Benchmark-Test durchführen zu können. Im Wesentlichen handelte es sich um:

  • - die C-Schnittstelle
  • - das Auto Reset Event
  • - WaitForSingleObject/WaitForMultipleObjects

Diese Erweiterungen werden vorerst nicht in die offizielle Version reinkommen, da ihre Funktionalität ausschließlich für die erfolgreiche Ausführung des Benchmark-Tests limitiert ist.

Tatsächlich ist bei 7-zip auch nur der Benchmark-Test möglich. Die Änderungen für eine normale Verwendung des Tools habe ich nicht vorgenommen.

Heute Mittag habe ich meine modifizierte Version gegen die Originalversion auf einem Pentium 4 3,2GHz (Hyperthreading) antreten lassen. Das Ergebnis war eine MIPS-Steigerung um etwa 14%, obwohl bei beiden Versionen lediglich zwei Threads am Start waren. Meine Version gaukelte 7-zip jedoch 8 Prozessoren vor, so dass mehr Tasks generiert werden konnten und mein Scheduler die Thread-Idle-Time der Originalversion mit Arbeit ausfüllen konnte.

Das abendliche Ergebnis auf einem Intel Q9450 unter Vista x64 als Screenshot:

Originalversion:
7-zip original

Modifizierte Version:
7-zip optimized

Wegen der besseren Speicherverwaltung unter x64 war es mir möglich, 32 statt 8 Prozessoren vorzugeben (unter Win32 wäre bei diesem Wert kein Speicher verfügbar).

Im Ergebnis hat sich der MIPS-Wert um etwa 17% gegenüber der Originalversion erhöht. Gar nicht schlecht für den Anfang…

In den nächsten Tagen werde ich den modifizierten Quellcode sowie die für diesen Test verwendete Fiber Pool API auf der Fiber Pool Website bereitstellen, um eine öffentliche Überprüfung der Ergebnisse zu ermöglichen.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>