1 | <!DOCTYPE html>
|
2 | <html>
|
3 | <head>
|
4 | <title>LokiJS benchmarks</title>
|
5 | <script src="taffy.js"></script>
|
6 | <script src="nedb.js"></script>
|
7 | <script src="../src/lokijs.js"></script>
|
8 | </head>
|
9 | <body>
|
10 | <button id="runTaffy">run Taffy</button>
|
11 | <button id="runLoki">run Loki</button>
|
12 | <button id="runNeDB">run NeDB</button>
|
13 | <button id="runRaw">run raw array insert</button>
|
14 | <script type="text/javascript">
|
15 |
|
16 | document.getElementById('runLoki').addEventListener('click', runLokiBenchmark);
|
17 | document.getElementById('runTaffy').addEventListener('click', runTaffyBenchmark);
|
18 | document.getElementById('runNeDB').addEventListener('click', runNeDBBenchmark);
|
19 | document.getElementById('runRaw').addEventListener('click', runRawBenchmark);
|
20 |
|
21 | var size = 100000;
|
22 |
|
23 | var generateData = function(size){
|
24 |
|
25 | function getRandomInt (min, max) {
|
26 | return Math.floor(Math.random() * (max - min + 1)) + min;
|
27 | }
|
28 |
|
29 | var coll = [];
|
30 |
|
31 | var az = 'qwertyuiopasdfghjklzxcvbnm'.split('');
|
32 | var azLength = az.length >>> 0;
|
33 |
|
34 | var len = size || 100;
|
35 | while(len--){
|
36 | var random = getRandomInt(0, azLength);
|
37 | coll.push( {name : az[random], age : random});
|
38 | }
|
39 |
|
40 | return coll;
|
41 | };
|
42 |
|
43 | var coll = generateData(size);
|
44 |
|
45 | function runNeDBBenchmark(){
|
46 |
|
47 | var db = new Nedb();
|
48 | var i = size;
|
49 | console.profile('Profiling NeDB');
|
50 | while(i--){
|
51 | db.insert(coll[i]);
|
52 | }
|
53 | console.trace();
|
54 | console.profileEnd();
|
55 | }
|
56 |
|
57 | function runTaffyBenchmark(){
|
58 |
|
59 | console.log('Init...');
|
60 |
|
61 |
|
62 |
|
63 | var friends = TAFFY();
|
64 |
|
65 | var i = size;
|
66 | console.profile('Profiling Taffy');
|
67 | while(i--){
|
68 | friends(coll[i]);
|
69 | }
|
70 | console.trace();
|
71 | console.profileEnd();
|
72 |
|
73 | }
|
74 |
|
75 | function runLokiBenchmark(){
|
76 |
|
77 | var db = new loki('db');
|
78 | var lokis = db.addCollection('friends','Friend');
|
79 |
|
80 | var j = size;
|
81 | console.profile('Profiling Loki');
|
82 | while(j--){
|
83 | lokis.insert(coll[j]);
|
84 | }
|
85 | console.trace();
|
86 | console.profileEnd();
|
87 | }
|
88 |
|
89 | function runRawBenchmark(){
|
90 |
|
91 | var db = [];
|
92 |
|
93 | var j = size;
|
94 | console.profile('Profiling Raw');
|
95 | while(j--){
|
96 | db.push(coll[j]);
|
97 | }
|
98 | console.trace();
|
99 | console.profileEnd();
|
100 | }
|
101 |
|
102 |
|
103 |
|
104 | </script>
|
105 |
|
106 | </body>
|
107 | </html> |
\ | No newline at end of file |