Multicore-MP3-Encoder: Zwischenversion geplant

Still und heimlich habe ich in Fiber Pool 1.0.0.10 eine fehlerbereinigte Version zum ersten Meilenstein bereitgestellt.

Als kleines Gimmick kann nun über die Kommandozeile der Parameter ‘*’ übergeben werden, sodass alle WAV-Dateien im aktuellen Verzeichnis nach MP3 konvertiert werden.

Durch die parallele Ausführung mehrerer Encoder-Instanzen auf mehreren Kernen hatte ich mir damit eine sehr gute Performance erhofft – die ist aber leider nicht eingetreten.

Der Grund dafür ist höchstwahrscheinlich das Lesen viel zu kleiner I/O-Pakete, die auch viel zu schnell bearbeitet werden und Fiber Pool keine Gelegenheit geben, Daten aus anderen Dateien zu lesen.
Um das zu beheben, werde ich nun die I/O-Operationen vollständig in die Verantwortung des I/O-Schedulers übergeben, der dann unabhängig von den Tasks die Dateien einliest. Das kommt dann in die Zwischenversion.

Bereits jetzt ist fpMP3Enc nicht mehr mit LAME vergleichbar, weil ich den eingesetzten LAME-Code für die Verwendung von 44,1kHz Stereo (in/out) optimiert habe. Das ist nicht weiter schlimm, denn letztendlich muss sich fpMP3Enc nur mit sich selbst vergleichen, und zwar bei ein, zwei oder vielen Kernen.

Weil’s mir auch keine Ruhe gelassen hat, wird in der nächsten Version auch SSE4-Code enthalten sein (#define USE_SSE4 (gesetzt by default)), der die WAV-Samples nach Kanal trennt und nach ‘float’ konvertiert.

Und das alles noch diese Woche… ;-)

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>