ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/Coro/eg/bench
(Generate patch)

Comparing cvsroot/Coro/eg/bench (file contents):
Revision 1.3 by root, Sat Jul 14 22:14:21 2001 UTC vs.
Revision 1.6 by root, Sat Jul 21 18:21:45 2001 UTC

10 10
11$a = bless {}, main::; 11$a = bless {}, main::;
12 12
13 13
14sub a { 14sub a {
15 $n++; # do something to taint the benchmark results ;)
16} 15}
17 16
18$b = new Coro sub { 17sub b {
18 my ($self) = shift;
19 my $num = shift;
20 return $num+1;
21}
22
23$b = async {
19 # do a little unrolling... 24 # do a little unrolling...
20 while() { 25 while() {
21 yield; yield; yield; yield; yield; 26 yield; yield; yield; yield; yield;
22 } 27 }
23}; 28};
26 31
27$main = $Coro::main; 32$main = $Coro::main;
28 33
29*transfer = \&Coro::State::transfer; 34*transfer = \&Coro::State::transfer;
30 35
31$c = Coro::State::newprocess { 36sub doit {
32 while() { 37 while() {
38 # some unrolling here as well..
39 transfer($c, $main); transfer($c, $main);
33 transfer($c, $main); transfer($c, $main); 40 transfer($c, $main); transfer($c, $main);
34 transfer($c, $main); transfer($c, $main); 41 transfer($c, $main); transfer($c, $main);
35 } 42 }
43}
44
45$c = Coro::State::_newprocess [sub {
46 doit(1,2,3,4,5,6,7,8,9);
36}; 47}];
37 48
38transfer($main, $c); 49transfer($main, $c);
39 50
40timethese 100000, { 51timethese 100000, {
41 method => '$a->a; $a->a; $a->a; $a->a', 52 empty => '&a; &a',
42 resume => 'yield; yield', 53 method => '$a->b(5); $a->b(6)',
54 yield => 'yield',
43 transfer => 'transfer($main, $c); transfer($main, $c)', 55 transfer => 'transfer($main, $c)',
44}; 56};
57

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines