x264 Benchmark (kein Schnelldurchgang! 32-Bit multicore und ≥1GB RAM)



  • Neulich wurde ich im IRC gebeten, einen etwas "intensiveren" Benchmark auf Basis des x264 Video Encoders zusammenzubasteln, was ich nun hiermit getan habe. Funktionieren sollte der Bench auf Windows 2000 und höher, mit einem kleinen Trick der weiter unten beschrieben ist auch auf Win98/Me. Inoffiziell ist das Ausführen auch auf MacOS X / BSD / Linux und anderen UNIX Maschinen sowie auf Haiku OS möglich.


    Der Benchmark bedient sich des Films Elephants Dream, sowie einiger Tools, die unter diversen OpenSource Lizenzen stehen.


    Der Videostream mißt satte 668MB, und muß erst einmal heruntergeladen werden. Entsprechend langsame Downloads bitte ich zu entschuldigen. Dazu gibts ein ZIP Archiv, in dem die Tools und das Benchmarkscript liegen. User mit einer Nettobandbreite von unter 400kB/s würde ich bitten von Mirror 0 (mein Server XIN.at) zu saugen, User mit mehr Bandbreite wollen vielleicht auf CryptonNites, Blacktrons oder Crackys Mirror 1/2/3 ausweichen, die mehr Bandbreite besitzen (Danke an [CryptonNite], [Blacktron] und [Cracky] für die Bereitstellung der Mirror!):


    Offizielle und gültige Builds, sowie die benötigte Videodatei:
    Elephants Dream Test-Videostream für Benchmarkzwecke (~668MB) und x264 Benchmarktools für Windows (~6MB):

    Um den Benchmark zu starten, entpackt man einfach das Archiv x264benchmark.zip, und legt die Datei elephantsdream_source.264 dazu. Danach führt man einfach die Datei launchbenchmark.bat aus! Das Ergebnis liegt nach Abschluß in der Datei RESULTS.TXT bereit, auf die man im Konsolenfenster extra hingewiesen wird, wenn der Durchlauf beendet ist.


    Prüfsummen für das Benchmarkvideo:

    • SHA512: 379a1833354605bb35f62ef864885e62d6eec8d8303925f8a48ead3fbd574d462f0beb3dccb77a6fde6e2320c3cba5eea5802bb335920ad2c83f8295f6c37575
    • SHA1: c01a9ab76dfe267a50998280ec3800049ca68a4b
    • MD5: 7b7e40610d94e2a6c2eefb231845ddb7

    Prüfsummen für das ZIP Archiv mit den Benchmarktools:

    • SHA512: 18f50a9d7422a93e0d813986d0703109a98d4df817a3c1474105132d909e49a62e86e25117a1b33ce5c4aefe913ae8ef16ae52a707804ad55898316c9a65b2d9
    • SHA1: 0c108c80962e68a9d0768258e2016bdb83f35fe8
    • MD5: 7e10d5cd34446638e4cab995eb63a5fa

    Prüfsummentools für Windows (Extrahiert aus CygWin, GPL Lizenz):

    • [SHA512 Tool] (Aufruf: sha512sum.exe <zieldatei>)
    • [SHA1 Tool] (Aufruf: sha1sum.exe <zieldatei>)
    • [MD5 Tool] (Aufruf: md5sum.exe <zieldatei>)


    Inoffizieller Sourcecode (für Selbstbau auf Linux etc., die Videodatei oben muß dennoch heruntergeladen werden!):

    • libavcodec/lavf Sourcecode --- [Link] (wird für eigene Kompilate auf Betriebssystemen wie MacOS, BSD oder Linux benötigt, um den H.264/AVC Input zu lesen).
    • x264 Sourcecode --- [Link] (MacOS X + xcode / BSD / Linux etc., muß gegen libavcodec/lavf linked werden!).
    • Bash Script --- [Link] (zum korrekten Ausführen des Benchmarks unter einer BASH wie etwa auf Linux/BSD vorzufinden. Script mit "time" vorangestellt ausführen, um ein Resultat zu erhalten, Videodatei sollte im selben Order liegen!)


    • [Detaillierte Anleitung zum Kompilieren und Installieren des Benchmarks unter Linux]


    Die ZIP Datei wäre bitte einfach im selben Ordner zu entpacken, wo auch elephantsdream_source.264 liegt. Danach reicht ein Doppelklick auf das Script launchbenchmark.bat, und der Leistungstest wird ausgeführt.


    Minimalanforderungen:

    • CPU mit SSE/MMX2 Befehlssatz
    • 1GB RAM
    • 3GB freier Festplattenspeicherplatz
    • Windows 2000


    Windows 98/98SE/Me:


    Das Benchmarkskript, mit dem der Benchmark ausgeführt wird ist unter Win9x nicht lauffähig. Um dem Abhilfe zu schaffen, hat CryptonNite mein ursprüngliches Skript abgewandelt und Win9x kompatibel gemacht. Um den Benchmark also unter 9x auszuführen, sollte es genügen statt der in den Tools befindlichen launchbenchmark.bat diese abgewandelte launchbenchmark_9x.bat auszuführen, dazu muß das Batch File natürlich im selben Ordner liegen, wie der Rest der Benchmarkdateien:


    [launchbenchmark_9x.bat]


    Ein mit diesem abgewandelten Skript ermitteltes Ergebnis behält seine volle Gültigkeit!


    SSE/MMX2-lose CPUs unter MS Windows, sowie Windows NT 4.0 Unterstützung:


    Solltet ihr die Minimalanforderungen im CPU-Sektor unterschreiten, ist die Referenzversion nicht mehr lauffähig. Um dem Abhilfe zu schaffen, habe ich einige spezielle Kompilate vom Sourcecode gebaut, die auch auf älteren CPUs lauffähig sind. Weitere Kompilate können auf Anfrage angefertigt werden, allerdings mache ich das nur für x86 CPUs, die noch kein SSE bzw. MMX2 unterstützen!


    Zudem war es für die Unterstützung von Windows NT 4.0 ebenfalls nötig, neue Binaries zu kompilieren, da die offiziellen Funktionen von Windows 9x/2000 nutzen, die unter NT 4.0 nicht verfügbar sind. Diese sind für CPUs mit wie auch ohne SSE verfügbar.


    Vorsicht ist hier allerdings geboten, diese Versionen sind allesamt nicht auf Win9x/Me lauffähig! Der Test von 686er Prozessoren ohne SSE ist damit auf Win9x/Me zum gegebenen Zeitpunkt leider nicht möglich. Danke an [Cyberhawk], der das Problem [entdeckt] hat.


    Hier die Builds:

    Windows NT 4.0 Builds:

    Diese Versionen sind einfach über den bestehenden Benchmark zu kopieren, dabei ist die bestehende x264.exe zu ersetzen. Die beiliegenden DLLs entstammen einer CygWin Distribution (GPL Lizenz) und werden für die Ausführung dieser Binaries zwingend benötigt.

    MacOS X auf Intel:

    • Viper hat mich darauf aufmerksam gemacht, daß man mithilfe des Package Managers "brew" auf MacOS X sehr leicht den x264 Source saugen, kompilieren und installieren kann, fix-fertig gegen die nötigen libav Libraries linked. Das funktioniert wie folgt auf einem Terminal:


      Eine Grundvoraussetzung für die Funktion ist aber leider ein bereits kompiliertes und installiertes libav Paket, was xcode erfordert.


    • Blacktron hat einen Weg gefunden, der den [yasm] Assembler, [xcode] und [git] voraussetzt, aber dafür ffmpeg statt libav für den Inputfilter kompiliert & installiert, und x264 gleich dazu! Nachdem man das yasm+git+xcode Trio auf dem System hat, genügt ein Ausführen des [hier beschriebenen Skriptes], um ein x264+ffmpeg zu bauen, welches den Benchmark ausführen kann! Danach genügt eine Ausführung des weiter oben verlinkten Bash Skriptes, welches im selben Verzeichnis wie die .x264 Datei liegen sollte.


    MacOS X auf PowerPC:


    Haiku:


    OpenSolaris 11:


    Oracle Solaris 11.2:


    NetBSD 6.0 RC2:


    OpenBSD 5.4 - 5.5:


    DragonFly BSD 3.0.2:


    PC-BSD 9.1:


    FreeBSD 9.2:


    Debian GNU/Hurd 0.3:


    ReactOS:


    FreeDOS:


    Microsoft Windows (2000 - 8.1):


    Sobald der Benchmark durch ist, schreibt er eine Datei RESULTS.txt im selben Ordner, wo die Zeit, die der Durchlauf benötigt hat festgehalten wird. Weiters meldet er nach Ende des Tests folgende Ausgabe im Shellfenster:

    Code
    1. "Das Ergebnis findet sich nun in der Datei "RESULTS.txt"!===The Results are now to be found in the file "RESULTS.txt"!"


    Dieses Ergebnis kann z.B. so aussehen, wie im Falle meines i7 980X, auf dem ich grade mit etwas Zusatzlast nebenher getestet habe:

    Code
    1. TimeThis : Elapsed Time : 01:15:47.703


    Das wären also 1 Stunde, 15 Minuten und 47 Sekunden. Der Test nutzt auch mehrere Hyperthreads und/oder CPU Kerne, falls vorhanden. Weiters sollte schon 1GB RAM im System stecken, um nicht ins Swapping zu geraten.


    Es ist beim Test bitte unbedingt drauf zu achten, daß nicht an der Systemzeit gedreht wird, solange er noch läuft! Das schließt Sommer-/Winterzeiteinstellungen (DST) mit ein, solche darf es während des Tests nicht geben!


    Zu posten wäre ein Ergebnis z.B. wie unten in der Liste zu sehen, das "ungefähre" Format wäre ca. so (Ohne Spitzklammern):


    <Zeit> | <Nickname des Urhebers> | <Sockel>/<Kerne pro Sockel>/<Threads pro Sockel> | <CPU(s)-Name(n)> | <Mainboard/Rechner/Plattform> | <Mainboard-Chipsatz> | <RAM-Typ & Menge> | <Betriebssystem>


    Die Basis des Tests sind zwei x264 Encoding Passes mit 10MBit/s und den im Blu-Ray Guide Thread gezeigten Einstellungen.


    Encoded werden übrigens 15.691 Frames pro Pass, in Summe also 31.382 Frames in 2 Passes!


    WARNUNG: Auf Maschinen mit sehr wenigen und/oder langsamen CPU Kernen kann es gut und gerne dazu kommen, daß der Test tagelang läuft! Man beachte hierbei speziell das Ende der Ergebnisliste, um sich einen Eindruck verschaffen zu können!


    Edit, 02.11.2010: Der ZIP Datei mit den Benchmarktools wurde nun die MSVCP60.DLL hinzugefügt. Danke an exxe, der herausgefunden hat, daß diese Library, die zum Visual C++ Redistributable Package gehört auf frisch installierten Windows 2000 Maschinen mitunter fehlen kann.


    Anmerkungen zur untenstehenden Ergebnisliste bzw. deren Farbmarkierungen:


    ** - Betriebssystem wurde virtualisiert (VMware, XEN, KVM, VirtualBox, ...) oder in einer Wine Laufzeitumgebung ausgeführt - für Referenzvergleiche ungültig!
    ** - Benchmark wurde mit geringeren als Minimalspezifikationen ausgeführt (z.B. 512MB RAM statt 1GB) - für Referenzvergleiche ungültig!
    ** - Benchmark wurde nicht mit Referenzsoftware ausgeführt (z.B. Custom x264 Build, OpenCL supported, etc.) - für Referenzvergleiche ungültig!


    Lizenzrechtliches:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

    Edited 397 times, last by GrandAdmiralThrawn ().

  • Die Ergebnisliste:


    Die Liste wurde nun auf meinen externen Webserver ausgelagert, da die Liste dort besser organisierbar und benutzbar ist.


    Link:


    x264 Ergebnisliste


    Ein Screenshot, der in etwa die Optik zeigt (linked auf die Ergebnisliste):





    Ergebnisse sollten natürlich auch nach der Auslagerung hier im Thread gepostet und diskutiert werden, ich werde die neuen Ergebnisse wie gewohnt eintragen!


    Edit: CSS für IE6, IE7, IE8 und IE9 auf Javascript mapped, funktioniert. FireFox 3 funtioniert nicht ordnungsgemäß. Nachfolgend eine Liste getesteter Browser:

    • Internet Explorer 6 @ Win 2000 (mittlerweile nicht mehr unterstützt, CSS Fehler beim Chipsatzhover)
    • Internet Explorer 7 & 8 @ XP x64 (mittlerweile nicht mehr unterstützt, CSS Fehler beim Chipsatzhover)
    • Internet Explorer 9, 10 & 11 @ Win 7
    • Safari 5.1 @ MacOS X, Safari 5.34 @ XP x64
    • Opera 11.50-12.16 @ XP x64
    • Opera 12.16 @ Linux & BSD UNIX
    • FireFox 6.0-27 @ XP x64, Linux & BSD UNIX
    • Chrome 13-31 @ XP x64 & Linux
    • Chromium 31-32 @ BSD UNIX
    • Midori 0.5.6 @ BSD UNIX
    • Epiphany 2.30.6 @ BSD UNIX
    • Konqueror 4.3.4 & 4.8.4 @ Linux
    • NetSurf 3.0 @ BSD UNIX


    Edit 2: Auf Anfrage von 666psycho und Konsorte hier das Überwachungssystem vom wahrscheinlich langsamsten Rechner, der sich da jemals durchquälen wird (Hard Refresh evtl. nötig für'n Reload): ;)


    Edit 3: 486er Überwachungsscreenshot nach Ende des Projektes enfernt. Dafür gibt es ein neues Feature zum Vertrösten: ;)



    Die User Topliste wird natürlich auch dynamisch erzeugt und ist damit immer am aktuellen Stand!


    Edit 4: Weitere dynamisch erzeugte Statistiken hinzugefügt, dieses Mal mit schönem Gebälk:




    Edit 5: Das neue Chipsatz-Hover-CSS funktioniert ggf. in einigen Browsern wie älteren Internet Explorern, Midori oder Safari nicht zu 100% korrekt, das sind aber nur kleinere kosmetische Fehler. In NetSurf 3.0 funktioniert das Hover gar nicht.


    Edit 6: Verlinkungen von Usernamen für besondere Fälle auf externe Webseiten ermöglicht. Sicherheit durch nur lesenden Zugriff des Datenbankbenutzers für die Liste optimiert.


    Edit 7: Die Usertopliste weist nun auch die Gesamtlaufzeit aus, die ein Benutzer in den Benchmark investiert hat, und zwar ebenso wie die durchnittliche Geschwindigkeit über alle Rechner, die ein Benutzer eingesendet hat!


    Edit 8: Nach einer erneuten starken Verbesserung der Usertopliste kann ein Benutzer die Liste hier nun nach freier Wahl nach Einsendungen, Gesamtlaufzeiten oder durchschnittlichen Laufzeiten sortieren!


    Edit 9: Frametimegraphen!


    Diese Graphen visualisieren die Geschwindigkeit des Benchmarks entlang der Zeitachse. Man sieht also, wo er schneller, und wo er eher langsamer rechnet (je nachdem was im Eingabevideo gerade kodiert werden muß). Je niedriger der Graph, desto höher die Geschwindigkeit:


    (Frametimes Pass 1, klicken zum Vergrößern)



    (Frametimes Pass 2, klicken zum Vergrößern)



    (Frametimes Pass 1, geglättet auf 500 Datenpunkte statt 15691, klicken zum Vergrößern)



    (Frametimes Pass 2, geglättet auf 500 Datenpunkte statt 15691, klicken zum Vergrößern)



    Für die geglätteten Graphen geht Dank an Elianda, der dafür die benötigte Plotting/Graphing Software zur Verfügung gestellt hat!

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

    Edited 55 times, last by GrandAdmiralThrawn ().

  • Es ist denkbar, daß es nicht ohne SSE2 geht. Aber ich kanns nicht testen, weil ich momentan keine solche Maschine in Betrieb habe. Um das zu verifizieren, kann man einfach das ZIP laden, extrahieren, und auf einer Kommandozeile "x264.exe" starten. Wenn er SSE2 braucht, sollte er dann entsprechendes hinschreiben. Keine Ahnung wie man eine SSE2-lose Maschine emulieren könnte um das zu testen..

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

  • Bei mir läufts jetzt, hat der Error am Anfang was zu bedeuten?


    Code
    1. 1 Datei(en) verschoben.
    2. ffms [error]: could not create index
    3. lavf [info]: 1920x1080p 1:1 @ 24/1 fps (cfr)
    4. x264 [info]: using SAR=1/1
    5. x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
    6. x264 [info]: profile High, level 4.0
    7. 580 frames: 3.25 fps, 9648.24 kb/s
  • Der Error bedeutet, daß der ffmpegsource Decoder sich weigert, einen H.264 Elementarstream zu indizieren. x264 verwendet dann statt dessen einfach lavf (libavcodec). Dieses Verhalten ist völlig normal, und betrifft alle x264 Versionen.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

  • Nein, der Benchmark ist angreifbar, so wie alles, was rein scriptgesteuert ist. Du kannst das File tauschen, du kannst auch einfach das Script umhacken, ist also voll verletzlich.


    Aber ich release das ja ned auf breiter Basis, ist nur für ein paar Leute hier. ;) Die Sicherheit ist nicht gewährleistet, aber ich setze bei den VA Usern einfach Mal Ehrlichkeit voraus.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

  • Noch ein Hexcore! Ja, der sollte es relativ flott bewältigen. :D

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

  • Hmm, nice. Also direkt wenig Hexcore User ham wir hier nicht! :topmodel:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

  • Hmm, am Pentium 4 auf der Arbeit läufts noch. Wird es wohl auch morgen noch. :topmodel:


    @Hexcore: Das nicht, aber angenommen hätt ich ned, daß schon so viele einen haben! :)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

    Edited once, last by GrandAdmiralThrawn ().

  • Ich brauch irgendwen, der prüft, ob der Mist auf einem Pentium III auch rennt! ;) Überall nur diese hypermodernen CPUs! :topmodel:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!

    Edited once, last by GrandAdmiralThrawn ().

  • Jo, es ist leider groß aufgrund des Quellvideos, läßt sich nicht ändern. ;)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be!