[PD] list vs. symbol array [was: Re: Licensing issues]

Jonathan Wilkes jancsika at yahoo.com
Thu Nov 8 02:45:49 CET 2012


----- Original Message -----

> From: Frank Barknecht <fbar at footils.org>
> To: "pd-list at iem.at" <pd-list at iem.at>
> Cc: 
> Sent: Tuesday, November 6, 2012 6:19 AM
> Subject: [PD] list vs. symbol array [was: Re:  Licensing issues]
> 
> On Mon, Nov 05, 2012 at 11:38:00AM -0800, Jonathan Wilkes wrote:
>>  ----- Original Message -----
>>  > From: Frank Barknecht <fbar at footils.org>
>>  > 
>>  > On Mon, Nov 05, 2012 at 08:26:17AM -0800, Jonathan Wilkes wrote:
>>  >>  How many table names total were there in the patch that was 
> overloading
>>  >>  the device?
>>  > 
>>  > I don't remember anymore, that was in 2009, when the abstraction 
> was first
>>  > posted here on pd-list. 
>>  > 
>>  > But if you don't believe me, just do some benchmarks on your own 
> and compare
>>  > array access with list filtering.
>> 
>>  It makes no difference if the number of table names is around 100.  At 1000 
> your
>>  method is certainly faster-- I've just never had a patch with 1000 
> tables.
> 
> I'm pretty sure, the patch at that time didn't either. The main problem 
> then
> was the high frequency with which lookups had to happen. As a special election
> day service I have written a benchmark showing this situation. On my machine
> the symbolarray uses about 16 percent CPU at the "metro" period of 
> 0.01 ms
> while list lookup uses 24. Now 0.01 ms may sound like a tempo you won't
> encounter in real music, but that's wrong: In chords you play many notes at 
> the
> same time, the "period" then is a very fast 0 ms. This can generate 
> CPU usage
> spikes on slow devices if the lookup is too slow - at least that's my
> explanation for why the symbolarray was able to fix the patch.

[symbolarray] does indeed take about half as much cpu as using the message
box.  It also takes exactly the same cpu as [makefilename %d-tab] which is
much simpler and doesn't require an abstraction.  But maybe you needed 
those specific names for the tables for some reason...

A lot of these Pd vanilla prototypes suffer from already being at the very edge
of what can be developed with the prototype.  You can't easily[1] add a sort method,
for example, nor can you extend the design to allow each element to be either a
symbol or float without adding two fields to the template struct and a conditional
that would impact the performance gain you get from using an array in the first
place.  Not to mention the near-complete lack of operators for symbols which is
why I call it an array of Pet Rocks in this case.

-Jonathan

[1] You can certainly split symbols and count their length in Pd vanilla but it ain't
pretty.

> 
> Ciao
> -- 
> Frank Barknecht                                     _ ______footils.org__
> 
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
> 



More information about the Pd-list mailing list