digitalmars.D.learn - Lazy Variadic Functions
- bearophile (3/3) Aug 08 2008 Can someone tell me what are some possible practical purposes of Lazy Va...
- Wyverex (80/84) Aug 08 2008 I've used them in some multi threading applications..
- Bill Baxter (4/5) Aug 08 2008 Try clicking on the little "comments" button at the upper right of
- bearophile (4/6) Aug 08 2008 Oh, I did not see that (in more than one year of using those pages), tha...
- Bill Baxter (4/8) Aug 08 2008 Yeh, that's a problem. Nobody does. For some reason those buttons
Can someone tell me what are some possible practical purposes of Lazy Variadic Functions? They are explained in the D docs (http://www.digitalmars.com/d/1.0/function.html ), but such docs sometimes sorely miss various practical usage examples... (I think such docs have to become a wiki that people can update, etc). Bye, bearophile
Aug 08 2008
bearophile wrote:Can someone tell me what are some possible practical purposes of Lazy Variadic Functions? They are explained in the D docs (http://www.digitalmars.com/d/1.0/function.html ), but such docs sometimes sorely miss various practical usage examples... (I think such docs have to become a wiki that people can update, etc). Bye, bearophileI've used them in some multi threading applications.. import tango.io.Stdout, tango.core.ThreadPool, tango.time.StopWatch, tango.core.Thread; private ThreadPool!() pool; static this() { setPool; } void setPool(uint size = 12) { pool = new ThreadPool!()(size); } //Parallel block******************************************************** // Lazy number of inputs void p_block(void delegate()[] blocks ...) { foreach(blk; blocks) pool.assign(blk); while(pool.activeJobs || pool.pendingJobs) Thread.sleep(0); }//********************************************************************* void main() { int a, b, c, d, e, f, g, h, i, j, k, l; Stdout("testing").newline; StopWatch w1; w1.start; p_block ( { for(a = 0; a < 10003201; ++a){} } , { for(b = 0; b < 80213002; ++b){} } , { for(c = 0; c < 561123423; ++c){} } , { for(d = 0; d < 10003201; ++d){} } , { for(e = 0; e < 80213002; ++e){} } , { for(f = 0; f < 561123423; ++f){} } , { for(g = 0; g < 10003201; ++g){} } , { for(h = 0; h < 80213002; ++h){} } , { for(i = 0; i < 561123423; ++i){} } , { for(j = 0; j < 10003201; ++j){} } , { for(k = 0; k < 80213002; ++k){} } , { for(l = 0; l < 561123423; ++l){} } ); auto t1 = w1.stop; Stdout.format("p_block = {} {} {}", a, b, c).newline; StopWatch w2; w2.start; { for(a = 0; a < 10003201; ++a){} } { for(b = 0; b < 80213002; ++b){} } { for(c = 0; c < 561123423; ++c){} } { for(d = 0; d < 10003201; ++d){} } { for(e = 0; e < 80213002; ++e){} } { for(f = 0; f < 561123423; ++f){} } { for(g = 0; g < 10003201; ++g){} } { for(h = 0; h < 80213002; ++h){} } { for(i = 0; i < 561123423; ++i){} } { for(j = 0; j < 10003201; ++j){} } { for(k = 0; k < 80213002; ++k){} } { for(l = 0; l < 561123423; ++l){} } auto t2 = w2.stop; Stdout.format("linear = {} {} {}", a, b, c).newline; Stdout.format("p_block time: {} Linear time: {} Delta: {}", t1, t2, t2-t1).newline; }
Aug 08 2008
On Fri, Aug 8, 2008 at 9:44 PM, bearophile <bearophileHUGS lycos.com> wrote:Can someone tell me what are some possible practical purposes of Lazy Variadic Functions? They are explained in the D docs (http://www.digitalmars.com/d/1.0/function.html ), but such docs sometimes sorely miss various practical usage examples... (I think such docs have to become a wiki that people can update, etc).Try clicking on the little "comments" button at the upper right of every page of the docs. --bb
Aug 08 2008
Bill Baxter:Try clicking on the little "comments" button at the upper right of every page of the docs.Oh, I did not see that (in more than one year of using those pages), thank you very much :-) Bye, bearophile
Aug 08 2008
On Sat, Aug 9, 2008 at 4:16 AM, bearophile <bearophileHUGS lycos.com> wrote:Bill Baxter:Yeh, that's a problem. Nobody does. For some reason those buttons scream out "ignore me!" up there. --bbTry clicking on the little "comments" button at the upper right of every page of the docs.Oh, I did not see that (in more than one year of using those pages), thank you very much :-)
Aug 08 2008