[PD] httpget: fun with tcpclient and pdstring

Martin Peach martin.peach at sympatico.ca
Wed Mar 4 17:46:50 CET 2009


Mathieu Bouchard wrote:
>On Wed, 4 Mar 2009, Martin Peach wrote:
>
>>That's nice. Now we need some html parsing objects so the pages go into 
>>the patch and not the pd window. It works well if the received pages are 
>>loaded into a table. I made tabfind to search a table for a string. Tables 
>>seem more efficient than lists and less volatile.
>
>Lists are volatile because they are (typically) stack-allocated or in any 
>way their contract of use makes (argc,argv) only valid during the call... 
>so you could use a heap-allocated argv but modify it between calls and it 
>would still make the list data have a stack-wise accessibility.
>
>Because lists are volatile, they need to be copied by any object that wants 
>to keep them. It's actually worse than that, as objects used recursively 
>have to watch out for what they can deallocate. It's not like you could 
>make [list] be faster without complicating it... and this includes plain 
>data-recursion as well too (set cold-inlet of an object while its 
>cold-inlet has still a job pending on the stack).
>
>Tables can be much faster but they also need to be statically-allocated (or 
>dynamically-patched!), and they are type-restricted (where you can't say 
>that any element slot may contain any atom one decides at runtime), and you 
>have to find names for the tables because they can't be anonymous.

Tables also use half as much memory as lists because they are mainly an 
array of floats, while a list of floats is actually an array of atoms, each 
atom comprising a tag indicating that it contains a float as well as the 
float itself.
For the network objects the lists are made of floats so the type restriction 
is not important.
Also a table can be reused and resized and its contents never get added to 
the symbol list so there's no constantly increasing memory involved. The 
typical web page has a huge amount of irrelevant text that would quickly 
clog the symbol table, so it's more efficient to extract the relevant bits 
before converting any of it to a symbol.

Martin






More information about the Pd-list mailing list