1 |
|
2 |
|
3 | var Threads= require('threads_a_gogo');
|
4 |
|
5 |
|
6 | function cb (err, msg) {
|
7 | this.destroy();
|
8 | ++i;
|
9 | process.stdout.write('\n'+ msg + ' -> '+ this.id);
|
10 | }
|
11 |
|
12 | function pi () {
|
13 | var π= 0;
|
14 | var num= 4;
|
15 | var den= 1;
|
16 | var plus= true;
|
17 |
|
18 | while (den < 1e7) {
|
19 | if (plus) {
|
20 | π+= num/den;
|
21 | plus= false;
|
22 | }
|
23 | else {
|
24 | π-= num/den;
|
25 | plus= true;
|
26 | }
|
27 | den+= 2;
|
28 | }
|
29 | return π;
|
30 | }
|
31 |
|
32 |
|
33 | var i= +process.argv[2] || 1;
|
34 | console.log('Using '+ i+ ' threads');
|
35 |
|
36 | var precompiled= Threads.preCompile('('+ pi+ ')()');
|
37 | var t= Date.now();
|
38 | while (i--) {
|
39 | Threads.create().eval(precompiled, cb);
|
40 | }
|
41 |
|
42 |
|
43 | i= 0;
|
44 | process.on('exit', function () {
|
45 | t= Date.now()- t;
|
46 | var tps= (i*1e3/t).toFixed(1);
|
47 | console.log('\nTiempo total (ms) -> '+ t);
|
48 | console.log('Threads por segundo -> '+ tps);
|
49 | console.log('Total de threads ejecutadas -> '+ i);
|
50 | });
|