“vbr-new” noch schneller

In Version 1.0.0.16 habe ich in “fpmp3enc” den “vbr-new”-Algorithmus nochmals verbessert:

Obwohl die Quantisierungs-Task mit hoher Priorität in den Fiber Pool hinzugefügt wurde, wurden sie und ihre Sub-Tasks in der alten Version erst dann ausgeführt, wenn andere Tasks mit ihrer Arbeit fertig waren.

Durch dieses Verhalten erreichten die Threads des Schedulers schnell die “Stop and Go”-Phase, in der sie in sehr kurzen Abständen gestartet und gestoppt werden, was zu großen Performanceeinbußen führte. (Deswegen ist die Performance mit 4 Threads auch niedriger als mit 3.)

In der neuen Version kommunizieren nun die normal priorisierten Tasks mit dem Fiber Pool, um zu prüfen, ob Tasks mit hoher Priorität gestartet werden können. Wenn dem so ist, unterbrechen sie ihre Arbeit für das Ausführen der höher priorisierten Tasks.

Die “Stop and Go”-Phase wird auch hier erreicht, jedoch später, weil durch die neue Lastbalancierung die Threads effizienter genutzt werden können. Mehr als 3 Threads zu verwenden, wird aber weiterhin nicht empfohlen.

Die letzte Version hatte bereits einen Speedup von 2,14. Mit den durchgeführten Änderungen wird jetzt ein Speedup von 2,74 erreicht.

Mehr ist erstmal nicht drin… ;-)

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>