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.14 by root, Fri Dec 1 13:36:08 2006 UTC vs.
Revision 1.22 by root, Sat Jun 11 13:49:00 2011 UTC

20 20
21$b = async { 21$b = async {
22 # do a little unrolling... 22 # do a little unrolling...
23 while() { 23 while() {
24 cede; cede; cede; cede; cede; 24 cede; cede; cede; cede; cede;
25 cede; cede; cede; cede; cede;
25 } 26 }
26}; 27};
27 28
28cede; 29cede;
29
30$main = $Coro::main;
31 30
32*transfer = \&Coro::State::transfer; 31*transfer = \&Coro::State::transfer;
33 32
34sub doit0 { 33sub doit0 {
35 while() { 34 while() {
36 # some unrolling here as well.. 35 # some unrolling here as well..
37 transfer($c0, $main, 0); transfer($c0, $main, 0); 36 transfer($c0, $main); transfer($c0, $main);
38 transfer($c0, $main, 0); transfer($c0, $main, 0); 37 transfer($c0, $main); transfer($c0, $main);
39 transfer($c0, $main, 0); transfer($c0, $main, 0); 38 transfer($c0, $main); transfer($c0, $main);
40 transfer($c0, $main, 0); transfer($c0, $main, 0); 39 transfer($c0, $main); transfer($c0, $main);
41 } 40 }
42} 41}
43 42
44sub doit1 { 43sub doit1 {
45 while() { 44 while() {
46 # some unrolling here as well.. 45 # some unrolling here as well..
47 transfer($c1, $main, -1); transfer($c1, $main, -1); 46 transfer($c1, $main); transfer($c1, $main);
48 transfer($c1, $main, -1); transfer($c1, $main, -1); 47 transfer($c1, $main); transfer($c1, $main);
49 transfer($c1, $main, -1); transfer($c1, $main, -1); 48 transfer($c1, $main); transfer($c1, $main);
50 transfer($c1, $main, -1); transfer($c1, $main, -1); 49 transfer($c1, $main); transfer($c1, $main);
51 } 50 }
52} 51}
53 52
54$c0 = new Coro::State sub { 53$c0 = new Coro::State sub {
55 doit0(1,2,3,4,5,6,7,8,9); 54 doit0(1,2,3,4,5,6,7,8,9);
57 56
58$c1 = new Coro::State sub { 57$c1 = new Coro::State sub {
59 doit1(1,2,3,4,5,6,7,8,9); 58 doit1(1,2,3,4,5,6,7,8,9);
60}; 59};
61 60
62transfer($main, $c0, 0); 61#$c0->save (0);
63transfer($main, $c1, -1); 62#$c1->save (-1);
64 63
64#Coro::State::enable_times 1;
65#use Coro::Debug; Coro::Debug::command "ps";#d#
66#(async {
67 $main = $Coro::current;
68
69 transfer($main, $c0);
70 transfer($main, $c1);
71
65timethese 1000000, { 72 timethese 5000000, {
66 function => 'a(5); a(6)', 73 function => 'a(5); a(6)',
67 method => '$a->b(5); $a->b(6)', 74 method => '$a->b(5); $a->b(6)',
68 cede => 'cede', 75 cede => 'cede',
69 transfer0 => 'transfer($main, $c0, 0)', 76 transfer0 => 'transfer($main, $c0)',
70 transfer1 => 'transfer($main, $c1, -1)', 77 transfer1 => 'transfer($main, $c1)',
71}; 78 };
79#})->join;
80#use Coro::Debug; Coro::Debug::command "ps";#d#
72 81
73 82
74

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines