[PD] Re: pure == slow, impure == fast ? was purepd

Frank Barknecht fbar at footils.org
Sun Nov 20 10:24:30 CET 2005


Hallo,
carmen hat gesagt: // carmen wrote:

> its a nice ideal, but i cant help but think we'd end up with
> something performing more like ruby than a realtime media system if
> 'everything is an abstraction' and the core just defined syntax. i
> mean the few times i rewrote things in pd - [hsv2rgb] and [sprintf]
> - they ended up about 10 times slower.. and thats not even dealing
> with a fraction of the bandwidth of audio or video..

Of course we all know, that patched stuff id Pd is slower than coding
stuff in C. Still we patch in Pd, why do we do it? Because performance
is not all that matters, ease of programming, the ability to change an
implementation on the fly etc. - all that is important as well and it
is the major reason, scripting languages are taking over large parts
of software development: The performance of the programmer is becoming
the much more important bottleneck than the performance of the CPU. 

Of course this shouldn't stop us from trying to sort out the
bottlenecks in our patches and where those can be fixed by coding a C
external. 

For example, when patching the [list]-abs I found, that I am using the
serialize operation [list-drip] *a lot*. I now did a benchmark and
saw, that serializing as done in the help patch is slower by a large
deal than the equivalent operation in Zexy. (Benchmark patches
attached). So including a [list serialize] or [list drip] in MAIN-Pd
would give a big performance boost. OTOH it is possible to get this
boost right now, if it's important, by replacing the serialization in
[list-drip] with zexy's drip. As all [list]-abs use the [list-drip]
abstraction, this will accelerate all of them immediatly. 

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 324 197 736 482 10;
#N canvas 0 0 450 300 bm 0;
#X obj 10 10 ldrip;
#X obj 10 30 ldrip;
#X obj 10 50 ldrip;
#X obj 10 70 ldrip;
#X obj 10 90 ldrip;
#X obj 10 110 ldrip;
#X obj 10 130 ldrip;
#X obj 10 150 ldrip;
#X obj 10 170 ldrip;
#X obj 10 190 ldrip;
#X obj 10 210 ldrip;
#X obj 10 230 ldrip;
#X obj 10 250 ldrip;
#X obj 10 270 ldrip;
#X obj 10 290 ldrip;
#X obj 10 310 ldrip;
#X obj 10 330 ldrip;
#X obj 10 350 ldrip;
#X obj 10 370 ldrip;
#X obj 10 390 ldrip;
#X obj 10 410 ldrip;
#X obj 10 430 ldrip;
#X obj 10 450 ldrip;
#X obj 10 470 ldrip;
#X obj 10 490 ldrip;
#X obj 10 510 ldrip;
#X obj 10 530 ldrip;
#X obj 10 550 ldrip;
#X obj 10 570 ldrip;
#X obj 10 590 ldrip;
#X obj 10 610 ldrip;
#X obj 10 630 ldrip;
#X obj 10 650 ldrip;
#X obj 10 670 ldrip;
#X obj 10 690 ldrip;
#X obj 10 710 ldrip;
#X obj 10 730 ldrip;
#X obj 10 750 ldrip;
#X obj 10 770 ldrip;
#X obj 10 790 ldrip;
#X obj 10 810 ldrip;
#X obj 10 830 ldrip;
#X obj 10 850 ldrip;
#X obj 10 870 ldrip;
#X obj 10 890 ldrip;
#X obj 10 910 ldrip;
#X obj 10 930 ldrip;
#X obj 10 950 ldrip;
#X obj 10 970 ldrip;
#X obj 10 990 ldrip;
#X obj 10 1010 ldrip;
#X obj 10 1030 ldrip;
#X obj 10 1050 ldrip;
#X obj 10 1070 ldrip;
#X obj 10 1090 ldrip;
#X obj 10 1110 ldrip;
#X obj 10 1130 ldrip;
#X obj 10 1150 ldrip;
#X obj 10 1170 ldrip;
#X obj 10 1190 ldrip;
#X obj 10 1210 ldrip;
#X obj 10 1230 ldrip;
#X obj 10 1250 ldrip;
#X obj 10 1270 ldrip;
#X obj 10 1290 ldrip;
#X obj 10 1310 ldrip;
#X obj 10 1330 ldrip;
#X obj 10 1350 ldrip;
#X obj 10 1370 ldrip;
#X obj 10 1390 ldrip;
#X obj 10 1410 ldrip;
#X obj 10 1430 ldrip;
#X obj 10 1450 ldrip;
#X obj 10 1470 ldrip;
#X obj 10 1490 ldrip;
#X obj 10 1510 ldrip;
#X obj 10 1530 ldrip;
#X obj 10 1550 ldrip;
#X obj 10 1570 ldrip;
#X obj 10 1590 ldrip;
#X obj 10 1610 ldrip;
#X obj 10 1630 ldrip;
#X obj 10 1650 ldrip;
#X obj 10 1670 ldrip;
#X obj 10 1690 ldrip;
#X obj 10 1710 ldrip;
#X obj 10 1730 ldrip;
#X obj 10 1750 ldrip;
#X obj 10 1770 ldrip;
#X obj 10 1790 ldrip;
#X obj 10 1810 ldrip;
#X obj 10 1830 ldrip;
#X obj 10 1850 ldrip;
#X obj 10 1870 ldrip;
#X obj 10 1890 ldrip;
#X obj 10 1910 ldrip;
#X obj 10 1930 ldrip;
#X obj 10 1950 ldrip;
#X obj 10 1970 ldrip;
#X obj 10 1990 ldrip;
#X obj 10 2010 ldrip;
#X obj 10 2030 ldrip;
#X obj 10 2050 ldrip;
#X obj 10 2070 ldrip;
#X obj 10 2090 ldrip;
#X obj 10 2110 ldrip;
#X obj 10 2130 ldrip;
#X obj 10 2150 ldrip;
#X obj 10 2170 ldrip;
#X obj 10 2190 ldrip;
#X obj 10 2210 ldrip;
#X obj 10 2230 ldrip;
#X obj 10 2250 ldrip;
#X obj 10 2270 ldrip;
#X obj 10 2290 ldrip;
#X obj 10 2310 ldrip;
#X obj 10 2330 ldrip;
#X obj 10 2350 ldrip;
#X obj 10 2370 ldrip;
#X obj 10 2390 ldrip;
#X obj 10 2410 ldrip;
#X obj 10 2430 ldrip;
#X obj 10 2450 ldrip;
#X obj 10 2470 ldrip;
#X obj 10 2490 ldrip;
#X obj 10 2510 ldrip;
#X obj 10 2530 ldrip;
#X obj 10 2550 ldrip;
#X obj 10 2570 ldrip;
#X obj 10 2590 ldrip;
#X obj 10 2610 ldrip;
#X obj 10 2630 ldrip;
#X obj 10 2650 ldrip;
#X obj 10 2670 ldrip;
#X obj 10 2690 ldrip;
#X obj 10 2710 ldrip;
#X obj 10 2730 ldrip;
#X obj 10 2750 ldrip;
#X obj 10 2770 ldrip;
#X obj 10 2790 ldrip;
#X obj 10 2810 ldrip;
#X obj 10 2830 ldrip;
#X obj 10 2850 ldrip;
#X obj 10 2870 ldrip;
#X obj 10 2890 ldrip;
#X obj 10 2910 ldrip;
#X obj 10 2930 ldrip;
#X obj 10 2950 ldrip;
#X obj 10 2970 ldrip;
#X obj 10 2990 ldrip;
#X obj 10 3010 ldrip;
#X obj 10 3030 ldrip;
#X obj 10 3050 ldrip;
#X obj 10 3070 ldrip;
#X obj 10 3090 ldrip;
#X obj 10 3110 ldrip;
#X obj 10 3130 ldrip;
#X obj 10 3150 ldrip;
#X obj 10 3170 ldrip;
#X obj 10 3190 ldrip;
#X obj 10 3210 ldrip;
#X obj 10 3230 ldrip;
#X obj 10 3250 ldrip;
#X obj 10 3270 ldrip;
#X obj 10 3290 ldrip;
#X obj 10 3310 ldrip;
#X obj 10 3330 ldrip;
#X obj 10 3350 ldrip;
#X obj 10 3370 ldrip;
#X obj 10 3390 ldrip;
#X obj 10 3410 ldrip;
#X obj 10 3430 ldrip;
#X obj 10 3450 ldrip;
#X obj 10 3470 ldrip;
#X obj 10 3490 ldrip;
#X obj 10 3510 ldrip;
#X obj 10 3530 ldrip;
#X obj 10 3550 ldrip;
#X obj 10 3570 ldrip;
#X obj 10 3590 ldrip;
#X obj 10 3610 ldrip;
#X obj 10 3630 ldrip;
#X obj 10 3650 ldrip;
#X obj 10 3670 ldrip;
#X obj 10 3690 ldrip;
#X obj 10 3710 ldrip;
#X obj 10 3730 ldrip;
#X obj 10 3750 ldrip;
#X obj 10 3770 ldrip;
#X obj 10 3790 ldrip;
#X obj 10 3810 ldrip;
#X obj 10 3830 ldrip;
#X obj 10 3850 ldrip;
#X obj 10 3870 ldrip;
#X obj 10 3890 ldrip;
#X obj 10 3910 ldrip;
#X obj 10 3930 ldrip;
#X obj 10 3950 ldrip;
#X obj 10 3970 ldrip;
#X obj 10 3990 ldrip;
#X obj 10 4010 ldrip;
#X obj 10 4030 ldrip;
#X obj 10 4050 ldrip;
#X obj 10 4070 ldrip;
#X obj 10 4090 ldrip;
#X obj 10 4110 ldrip;
#X obj 10 4130 ldrip;
#X obj 10 4150 ldrip;
#X obj 10 4170 ldrip;
#X obj 10 4190 ldrip;
#X obj 10 4210 ldrip;
#X obj 10 4230 ldrip;
#X obj 10 4250 ldrip;
#X obj 10 4270 ldrip;
#X obj 10 4290 ldrip;
#X obj 10 4310 ldrip;
#X obj 10 4330 ldrip;
#X obj 10 4350 ldrip;
#X obj 10 4370 ldrip;
#X obj 10 4390 ldrip;
#X obj 10 4410 ldrip;
#X obj 10 4430 ldrip;
#X obj 10 4450 ldrip;
#X obj 10 4470 ldrip;
#X obj 10 4490 ldrip;
#X obj 10 4510 ldrip;
#X obj 10 4530 ldrip;
#X obj 10 4550 ldrip;
#X obj 10 4570 ldrip;
#X obj 10 4590 ldrip;
#X obj 10 4610 ldrip;
#X obj 10 4630 ldrip;
#X obj 10 4650 ldrip;
#X obj 10 4670 ldrip;
#X obj 10 4690 ldrip;
#X obj 10 4710 ldrip;
#X obj 10 4730 ldrip;
#X obj 10 4750 ldrip;
#X obj 10 4770 ldrip;
#X obj 10 4790 ldrip;
#X obj 10 4810 ldrip;
#X obj 10 4830 ldrip;
#X obj 10 4850 ldrip;
#X obj 10 4870 ldrip;
#X obj 10 4890 ldrip;
#X obj 10 4910 ldrip;
#X obj 10 4930 ldrip;
#X obj 10 4950 ldrip;
#X obj 10 4970 ldrip;
#X obj 10 4990 ldrip;
#X obj 10 5010 ldrip;
#X obj 10 5030 ldrip;
#X obj 10 5050 ldrip;
#X obj 10 5070 ldrip;
#X obj 10 5090 ldrip;
#X obj 10 5110 ldrip;
#X obj 10 5130 ldrip;
#X obj 10 5150 ldrip;
#X obj 10 5170 ldrip;
#X obj 10 5190 ldrip;
#X obj 10 5210 ldrip;
#X obj 10 5230 ldrip;
#X obj 10 5250 ldrip;
#X obj 10 5270 ldrip;
#X obj 10 5290 ldrip;
#X obj 10 5310 ldrip;
#X obj 10 5330 ldrip;
#X obj 10 5350 ldrip;
#X obj 10 5370 ldrip;
#X obj 10 5390 ldrip;
#X obj 10 5410 ldrip;
#X obj 10 5430 ldrip;
#X obj 10 5450 ldrip;
#X obj 10 5470 ldrip;
#X obj 10 5490 ldrip;
#X obj 10 5510 ldrip;
#X obj 10 5530 ldrip;
#X obj 10 5550 ldrip;
#X obj 10 5570 ldrip;
#X obj 10 5590 ldrip;
#X obj 10 5610 ldrip;
#X obj 10 5630 ldrip;
#X obj 10 5650 ldrip;
#X obj 10 5670 ldrip;
#X obj 10 5690 ldrip;
#X obj 10 5710 ldrip;
#X obj 10 5730 ldrip;
#X obj 10 5750 ldrip;
#X obj 10 5770 ldrip;
#X obj 10 5790 ldrip;
#X obj 10 5810 ldrip;
#X obj 10 5830 ldrip;
#X obj 10 5850 ldrip;
#X obj 10 5870 ldrip;
#X obj 10 5890 ldrip;
#X obj 10 5910 ldrip;
#X obj 10 5930 ldrip;
#X obj 10 5950 ldrip;
#X obj 10 5970 ldrip;
#X obj 10 5990 ldrip;
#X obj 10 6010 ldrip;
#X obj 10 6030 ldrip;
#X obj 10 6050 ldrip;
#X obj 10 6070 ldrip;
#X obj 10 6090 ldrip;
#X obj 10 6110 ldrip;
#X obj 10 6130 ldrip;
#X obj 10 6150 ldrip;
#X obj 10 6170 ldrip;
#X obj 10 6190 ldrip;
#X obj 10 6210 ldrip;
#X obj 10 6230 ldrip;
#X obj 10 6250 ldrip;
#X obj 10 6270 ldrip;
#X obj 10 6290 ldrip;
#X obj 10 6310 ldrip;
#X obj 10 6330 ldrip;
#X obj 10 6350 ldrip;
#X obj 10 6370 ldrip;
#X obj 10 6390 ldrip;
#X obj 10 6410 ldrip;
#X obj 10 6430 ldrip;
#X obj 10 6450 ldrip;
#X obj 10 6470 ldrip;
#X obj 10 6490 ldrip;
#X obj 10 6510 ldrip;
#X obj 10 6530 ldrip;
#X obj 10 6550 ldrip;
#X obj 10 6570 ldrip;
#X obj 10 6590 ldrip;
#X obj 10 6610 ldrip;
#X obj 10 6630 ldrip;
#X obj 10 6650 ldrip;
#X obj 10 6670 ldrip;
#X obj 10 6690 ldrip;
#X obj 10 6710 ldrip;
#X obj 10 6730 ldrip;
#X obj 10 6750 ldrip;
#X obj 10 6770 ldrip;
#X obj 10 6790 ldrip;
#X obj 10 6810 ldrip;
#X obj 10 6830 ldrip;
#X obj 10 6850 ldrip;
#X obj 10 6870 ldrip;
#X obj 10 6890 ldrip;
#X obj 10 6910 ldrip;
#X obj 10 6930 ldrip;
#X obj 10 6950 ldrip;
#X obj 10 6970 ldrip;
#X obj 10 6990 ldrip;
#X obj 10 7010 ldrip;
#X obj 10 7030 ldrip;
#X obj 10 7050 ldrip;
#X obj 10 7070 ldrip;
#X obj 10 7090 ldrip;
#X obj 10 7110 ldrip;
#X obj 10 7130 ldrip;
#X obj 10 7150 ldrip;
#X obj 10 7170 ldrip;
#X obj 10 7190 ldrip;
#X obj 10 7210 ldrip;
#X obj 10 7230 ldrip;
#X obj 10 7250 ldrip;
#X obj 10 7270 ldrip;
#X obj 10 7290 ldrip;
#X obj 10 7310 ldrip;
#X obj 10 7330 ldrip;
#X obj 10 7350 ldrip;
#X obj 10 7370 ldrip;
#X obj 10 7390 ldrip;
#X obj 10 7410 ldrip;
#X obj 10 7430 ldrip;
#X obj 10 7450 ldrip;
#X obj 10 7470 ldrip;
#X obj 10 7490 ldrip;
#X obj 10 7510 ldrip;
#X obj 10 7530 ldrip;
#X obj 10 7550 ldrip;
#X obj 10 7570 ldrip;
#X obj 10 7590 ldrip;
#X obj 10 7610 ldrip;
#X obj 10 7630 ldrip;
#X obj 10 7650 ldrip;
#X obj 10 7670 ldrip;
#X obj 10 7690 ldrip;
#X obj 10 7710 ldrip;
#X obj 10 7730 ldrip;
#X obj 10 7750 ldrip;
#X obj 10 7770 ldrip;
#X obj 10 7790 ldrip;
#X obj 10 7810 ldrip;
#X obj 10 7830 ldrip;
#X obj 10 7850 ldrip;
#X obj 10 7870 ldrip;
#X obj 10 7890 ldrip;
#X obj 10 7910 ldrip;
#X obj 10 7930 ldrip;
#X obj 10 7950 ldrip;
#X obj 10 7970 ldrip;
#X obj 10 7990 ldrip;
#X obj 10 8010 ldrip;
#X obj 10 8030 ldrip;
#X obj 10 8050 ldrip;
#X obj 10 8070 ldrip;
#X obj 10 8090 ldrip;
#X obj 10 8110 ldrip;
#X obj 10 8130 ldrip;
#X obj 10 8150 ldrip;
#X obj 10 8170 ldrip;
#X obj 10 8190 ldrip;
#X obj 10 8210 ldrip;
#X obj 10 8230 ldrip;
#X obj 10 8250 ldrip;
#X obj 10 8270 ldrip;
#X obj 10 8290 ldrip;
#X obj 10 8310 ldrip;
#X obj 10 8330 ldrip;
#X obj 10 8350 ldrip;
#X obj 10 8370 ldrip;
#X obj 10 8390 ldrip;
#X obj 10 8410 ldrip;
#X obj 10 8430 ldrip;
#X obj 10 8450 ldrip;
#X obj 10 8470 ldrip;
#X obj 10 8490 ldrip;
#X obj 10 8510 ldrip;
#X obj 10 8530 ldrip;
#X obj 10 8550 ldrip;
#X obj 10 8570 ldrip;
#X obj 10 8590 ldrip;
#X obj 10 8610 ldrip;
#X obj 10 8630 ldrip;
#X obj 10 8650 ldrip;
#X obj 10 8670 ldrip;
#X obj 10 8690 ldrip;
#X obj 10 8710 ldrip;
#X obj 10 8730 ldrip;
#X obj 10 8750 ldrip;
#X obj 10 8770 ldrip;
#X obj 10 8790 ldrip;
#X obj 10 8810 ldrip;
#X obj 10 8830 ldrip;
#X obj 10 8850 ldrip;
#X obj 10 8870 ldrip;
#X obj 10 8890 ldrip;
#X obj 10 8910 ldrip;
#X obj 10 8930 ldrip;
#X obj 10 8950 ldrip;
#X obj 10 8970 ldrip;
#X obj 10 8990 ldrip;
#X obj 10 9010 ldrip;
#X obj 10 9030 ldrip;
#X obj 10 9050 ldrip;
#X obj 10 9070 ldrip;
#X obj 10 9090 ldrip;
#X obj 10 9110 ldrip;
#X obj 10 9130 ldrip;
#X obj 10 9150 ldrip;
#X obj 10 9170 ldrip;
#X obj 10 9190 ldrip;
#X obj 10 9210 ldrip;
#X obj 10 9230 ldrip;
#X obj 10 9250 ldrip;
#X obj 10 9270 ldrip;
#X obj 10 9290 ldrip;
#X obj 10 9310 ldrip;
#X obj 10 9330 ldrip;
#X obj 10 9350 ldrip;
#X obj 10 9370 ldrip;
#X obj 10 9390 ldrip;
#X obj 10 9410 ldrip;
#X obj 10 9430 ldrip;
#X obj 10 9450 ldrip;
#X obj 10 9470 ldrip;
#X obj 10 9490 ldrip;
#X obj 10 9510 ldrip;
#X obj 10 9530 ldrip;
#X obj 10 9550 ldrip;
#X obj 10 9570 ldrip;
#X obj 10 9590 ldrip;
#X obj 10 9610 ldrip;
#X obj 10 9630 ldrip;
#X obj 10 9650 ldrip;
#X obj 10 9670 ldrip;
#X obj 10 9690 ldrip;
#X obj 10 9710 ldrip;
#X obj 10 9730 ldrip;
#X obj 10 9750 ldrip;
#X obj 10 9770 ldrip;
#X obj 10 9790 ldrip;
#X obj 10 9810 ldrip;
#X obj 10 9830 ldrip;
#X obj 10 9850 ldrip;
#X obj 10 9870 ldrip;
#X obj 10 9890 ldrip;
#X obj 10 9910 ldrip;
#X obj 10 9930 ldrip;
#X obj 10 9950 ldrip;
#X obj 10 9970 ldrip;
#X obj 10 9990 ldrip;
#X restore 144 424 pd bm;
#X obj 26 382 s pd-bm;
#X msg 146 320 clear;
#X obj 26 270 until;
#X obj 26 201 t b b;
#X floatatom 130 118 5 0 0 2 howmany - -;
#X obj 26 245 f;
#X obj 236 151 bng 32 250 50 0 empty empty test-zexy-drip 0 -6 0 8
-258699 -1 -1;
#X obj 26 147 bng 32 250 50 0 empty empty test-list-drip 0 -6 0 8 -24198
-1 -1;
#X obj 26 295 f 10;
#X obj 59 294 + 20;
#X msg 70 270 10;
#X obj 236 378 s pd-bm;
#X msg 356 316 clear;
#X obj 236 266 until;
#X obj 236 197 t b b;
#X obj 236 241 f;
#X obj 236 291 f 10;
#X obj 269 290 + 20;
#X msg 280 266 10;
#X msg 26 319 obj 10 \$1 ldrip;
#X obj 510 150 random 100;
#X obj 509 123 until;
#X obj 510 183 list;
#X obj 549 183 t a;
#X obj 487 217 list;
#X obj 487 244 s THE_LIST;
#X msg 517 67 1000;
#X obj 512 99 t f b;
#X obj 430 168 bng 24 250 50 0 empty empty run_test 0 -6 0 8 -225271
-1 -1;
#X msg 236 315 obj 10 \$1 zdrip;
#X text 497 45 Make test list;
#X text 24 22 first make test list \, then select \, how many objects
to create \, then create them in [pd bm] by pressing the colorful bngs.
After that \, send the test list and watch the time it takes for the
bang \, too get black again.;
#X connect 2 0 1 0;
#X connect 3 0 9 0;
#X connect 4 0 6 0;
#X connect 4 1 2 0;
#X connect 4 1 11 0;
#X connect 5 0 6 1;
#X connect 5 0 16 1;
#X connect 6 0 3 0;
#X connect 7 0 15 0;
#X connect 8 0 4 0;
#X connect 9 0 10 0;
#X connect 9 0 20 0;
#X connect 10 0 9 1;
#X connect 11 0 9 1;
#X connect 13 0 12 0;
#X connect 14 0 17 0;
#X connect 15 0 16 0;
#X connect 15 1 13 0;
#X connect 15 1 19 0;
#X connect 16 0 14 0;
#X connect 17 0 18 0;
#X connect 17 0 30 0;
#X connect 18 0 17 1;
#X connect 19 0 17 1;
#X connect 20 0 1 0;
#X connect 21 0 23 0;
#X connect 22 0 21 0;
#X connect 23 0 24 0;
#X connect 23 0 25 1;
#X connect 24 0 23 1;
#X connect 25 0 26 0;
#X connect 27 0 28 0;
#X connect 28 0 22 0;
#X connect 28 1 23 1;
#X connect 29 0 25 0;
#X connect 30 0 12 0;
-------------- next part --------------
#N canvas 0 0 450 300 10;
#X obj 141 70 r THE_LIST;
#X obj 141 108 list-drip;
#X connect 0 0 1 0;
-------------- next part --------------
#N canvas 0 0 450 300 10;
#X obj 141 70 r THE_LIST;
#X obj 141 108 drip;
#X connect 0 0 1 0;


More information about the Pd-list mailing list