hi Mathieu
nice abstraciton... ... and i thought my list-drip-custom would win :(
could somebody explain how it exaclty works?
what license do you publish your code when you post code on the pd-list? same as puredata?
thanks eni
Mathieu Bouchard wrote:
seems like it would fit better on this mailing-list.
---------- Forwarded message ---------- Date: Wed, 25 Feb 2009 11:38:27 -0500 (EST) From: Mathieu Bouchard matju@artengine.ca To: Frank Barknecht fbar@footils.org Cc: pd-dev@iem.at Subject: [PD-dev] extremely fast pure pd [list-drip]
On Wed, 25 Feb 2009, Frank Barknecht wrote:
such a standard library would define an *interface* for standard objects. Where performance is an issue, the interface could alternatively implemented with externals. This also is exemplified in [list]-abs, where personally I use a version of [list-drip] that has zexy's [drip] inside for speed reasons. It behaves exactly like the abstraction version so it doesn't matter if people don't have zexy installed.
i just made a pure-pd [list-drip] that is much much quicker for large lists than your pure pd [list-drip].
For a list of size 32768, I find it to be at least 250 times faster.
For a list of size 4096, it's at least 24 times faster.
See attachment.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
#N canvas 0 22 880 375 10; #X obj 167 99 until; #X msg 183 193 add2 a; #N canvas 583 22 450 300 counter 0; #X floatatom 104 104 8 0 0 0 - - -; #X obj 222 106 inlet; #X obj 167 103 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 166 126 0; #X obj 263 198 + 1; #X obj 223 198 f 0; #X obj 223 144 b; #X connect 1 0 6 0; #X connect 2 0 3 0; #X connect 3 0 5 0; #X connect 4 0 5 1; #X connect 5 0 4 0; #X connect 5 0 0 0; #X connect 6 0 5 0; #X coords 0 -1 1 1 85 20 2 100 100; #X restore 183 127 pd counter; #N canvas 0 22 450 300 gettime 0; #X obj 214 122 realtime; #X floatatom 119 118 9 0 0 0 - - -; #X obj 211 61 t b b b; #X obj 302 128 outlet; #X obj 102 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 211 31 inlet; #X connect 0 0 1 0; #X connect 2 0 0 1; #X connect 2 1 3 0; #X connect 2 2 0 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X coords 0 -1 1 1 85 35 1 100 100; #X restore 72 197 pd gettime; #N canvas 0 22 450 300 gettime 0; #X obj 214 122 realtime; #X floatatom 119 118 9 0 0 0 - - -; #X obj 211 61 t b b b; #X obj 302 128 outlet; #X obj 102 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 211 31 inlet; #X connect 0 0 1 0; #X connect 2 0 0 1; #X connect 2 1 3 0; #X connect 2 2 0 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X coords 0 -1 1 1 85 35 1 100 100; #X restore 343 122 pd gettime; #X msg 204 72 100; #X msg 168 72 10; #X msg 250 71 1000; #N canvas 512 22 619 335 list-drip 0; #X obj 64 206 list split 1; #X obj 64 123 until; #X obj 64 181 list append; #X obj 194 206 bang; #X text 146 90 First store list , then start the loop; #X text 163 118 "until" bangs its output until told to stop by a "bang" to its right inlet.; #X text 182 160 Store the remaining list.; #X text 239 205 third outlet of "split" tells us to stop.; #X obj 64 243 outlet; #X obj 64 57 inlet; #X text 237 44 From list-help.pd; #X obj 143 243 outlet; #X obj 64 86 t b a; #X connect 0 0 8 0; #X connect 0 1 2 1; #X connect 0 2 3 0; #X connect 0 2 11 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 1 1; #X connect 9 0 12 0; #X connect 12 0 1 0; #X connect 12 1 2 1; #X restore 379 169 pd list-drip; #N canvas 0 22 450 300 gettime 0; #X obj 214 122 realtime; #X floatatom 119 118 9 0 0 0 - - -; #X obj 211 61 t b b b; #X obj 302 128 outlet; #X obj 102 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 211 31 inlet; #X connect 0 0 1 0; #X connect 2 0 0 1; #X connect 2 1 3 0; #X connect 2 2 0 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X coords 0 -1 1 1 85 35 1 100 100; #X restore 496 97 pd gettime; #X obj 721 78 drip; #X msg 177 245; #X msg 342 225; #X msg 507 187; #X msg 255 185 set; #X msg 324 71 10000; #X text 334 60 warning slow; #N canvas 0 22 431 325 list-drip-quick 0; #X obj 33 54 t a a; #X obj 33 111 spigot; #X obj 82 73 bang; #X obj 82 92 1; #X obj 180 54 route bang; #X obj 171 73 bang; #X obj 171 92 0; #X obj 82 54 list split 2; #X obj 101 188 list split; #X obj 130 130 list length; #X obj 130 149 >> 1; #X obj 33 130 t a a a a; #X obj 33 276 list split; #X obj 72 212 list length; #X obj 72 231 >> 1; #X obj 33 19 inlet; #X obj 274 54 outlet; #X text 75 19 Copyright 2009 by Mathieu Bouchard; #X connect 0 0 1 0; #X connect 0 1 7 0; #X connect 1 0 11 0; #X connect 2 0 3 0; #X connect 3 0 1 1; #X connect 4 1 16 0; #X connect 5 0 6 0; #X connect 6 0 1 1; #X connect 7 0 2 0; #X connect 7 2 4 0; #X connect 7 2 5 0; #X connect 8 0 0 0; #X connect 9 0 10 0; #X connect 10 0 8 1; #X connect 11 0 12 0; #X connect 11 1 13 0; #X connect 11 2 8 0; #X connect 11 3 9 0; #X connect 12 1 0 0; #X connect 13 0 14 0; #X connect 14 0 12 1; #X connect 15 0 0 0; #X restore 520 150 pd list-drip-quick; #N canvas 0 22 602 302 list-drip-custom 0; #X obj 97 218 t b a; #X obj 127 187 list; #X obj 97 157 list split 1; #X obj 37 127 t b a; #X obj 67 96 list; #X obj 37 36 inlet; #X obj 129 248 outlet; #X obj 37 66 list split 64; #X text 165 60 cuts list into smaller lists with 64 items to overcome the stack overflow problem. 10'000 items and maybe more.; #X text 211 230 feel free to use this anyway u like; #X connect 0 0 1 0; #X connect 0 1 6 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 2 1 1 1; #X connect 3 0 4 0; #X connect 3 1 2 0; #X connect 4 0 7 0; #X connect 5 0 7 0; #X connect 7 0 3 0; #X connect 7 1 4 1; #X connect 7 2 2 0; #X restore 45 283 pd list-drip-custom; #X obj 199 220 t a; #X connect 0 0 1 0; #X connect 0 0 2 0; #X connect 1 0 19 0; #X connect 3 0 11 0; #X connect 4 0 12 0; #X connect 5 0 0 0; #X connect 6 0 0 0; #X connect 7 0 0 0; #X connect 9 0 13 0; #X connect 11 0 18 0; #X connect 12 0 8 0; #X connect 13 0 17 0; #X connect 14 0 19 0; #X connect 15 0 0 0; #X connect 19 0 11 0; #X connect 19 0 12 0; #X connect 19 0 13 0;