On Wed, 2007-11-28 at 16:52 +0100, David Olofson wrote:
On Wednesday 28 November 2007, Krzysztof Foltman
wrote:
[...]
I don't think it's a serious problem.
Huge processing buffers are
not very useful in practice.
[...]
Actually, they're directly harmful most of the time!
For any graph with more than one plugin, and with plugins that use
internal buffers of the I/O buffer size, large buffers means you'll
get a gigantic cache footprint. It gets worse in "high" latency real
time situations (games, media players etc), where you have other
threads fighting for the cache as well.
Obviously, this effect is less visible with non-trivial plugins - but
even how many plugins in a "normal" graph are actually CPU bound? In
my experience, the effect is very pronounced (several times higher
CPU load with 512 samples/buffer than with 32) when using a bunch of
sampleplayer voices (cubic interpolation + oversampling) and some
simple effects. You have to do some pretty serious processing to go
CPU bound on a modern PC...
Not really true for linear scans through memory, which reading plugin
buffers usually is. This is the ideal cache situation, and you can
definitely get full utilization sweeping through things much larger than
the cache this way (this is exactly what the cache is designed to do,
and it does it well; try it).
When you're jumping all over the place things do go to hell fast, but
luckily we're not.
-DR-