From: Javier S. P. <ja...@te...> - 2006-05-26 20:41:31
|
Hi, Danny. Using the garbage collector looks like a bad idea but as long as it works... I certainly wouldn't be able to maintain such a thing. I've got problems tracing this one. Question: why all those #defines in oscillator.cpp? Is there a reason you're not using inheritance or function pointers? Bye. |
From: Tobias D. <tob...@gm...> - 2006-05-29 13:24:39
|
Am Freitag, 26. Mai 2006 22:45 schrieb Javier Serrano Polo: > Hi, Danny. > > Using the garbage collector looks like a bad idea but as long as it > works... I certainly wouldn't be able to maintain such a thing. I think too, that we shouldn't introduce things like garbage collectors, as= =20 they might slowdown and bloat LMMS a lot. We'd better keep an eye on=20 programming everything as clean and stable as possible... > I've got problems tracing this one. Question: why all those #defines in > oscillator.cpp? Is there a reason you're not using inheritance or > function pointers? this is just for getting more optimized code. This way the static=20 wave-shape-routines of oscillator-class can be really inlined.=20 =46unction-pointers for such *really small* methods would cost way too much= =20 CPU-time. The same for inheritance, which is nice, but slow (because of=20 vtables etc.!). The defines form the basic-code which is some kind=20 of "specialized" by the parameters and can be optimized a lot as the compil= er=20 exactly knows, which wave-shape-routes is used in all places and therefore= =20 can speed up things a lot... I know that this isn't a really nice solution,= =20 but the oscillator-class and their methods probably contain the mostly=20 executed code at all. Just think whats happening when the user plays let's say three notes with=20 triple-oscillator with chord=3Doctave and range=3D3, this makes 27 oscillat= ors=20 for each channel -> 54 for stereo -> 54 * 44100 =3D 2.381.400 cycles per se= cond=20 in oscillator::updateX(...)-methods! And this is just one instrument!=20 Everything clear? ;-) Actually we'd need some really fast inline=20 MMX/SSE-asm-code on intel-platform... toby =2D-=20 Keulen sind als Vernichtungswerkzeuge etwas aus der Mode. Aber das Schicksal bedient sich ihrer noch. -- Heinz R=FChmann |