Skip to content

Commit

Permalink
Added benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
davedoesdev committed Jul 1, 2013
1 parent 142cbe2 commit 4764b19
Show file tree
Hide file tree
Showing 17 changed files with 416 additions and 180 deletions.
14 changes: 12 additions & 2 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function (grunt)
grunt.initConfig(
{
jslint: {
files: [ 'Gruntfile.js', 'index.js', 'test/*.js' ],
files: [ 'Gruntfile.js', 'index.js', 'test/*.js', 'bench/**/*.js' ],
directives: {
white: true
}
Expand All @@ -33,8 +33,16 @@ module.exports = function (grunt)

coveralls: {
cmd: 'cat coverage/lcov.info | coveralls'
},

bench: {
cmd: './node_modules/.bin/bench -c 10000 -i bench/options/default.js -k options'
},

'bench-check': {
cmd: './node_modules/.bin/bench -c 10000 -i bench/options/check.js -k options'
}
}
},
});

grunt.loadNpmTasks('grunt-jslint');
Expand All @@ -47,5 +55,7 @@ module.exports = function (grunt)
grunt.registerTask('docs', 'apidox');
grunt.registerTask('coverage', ['exec:cover', 'exec:check_cover']);
grunt.registerTask('coveralls', 'exec:coveralls');
grunt.registerTask('bench', 'exec:bench');
grunt.registerTask('bench-check', 'exec:bench-check');
grunt.registerTask('default', ['jslint', 'cafemocha']);
};
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ grunt coverage

Coveralls page is [here](https://coveralls.io/r/davedoesdev/qlobber).

## Benchmarks

```javascript
grunt bench
```

qlobber is also benchmarked in [ascoltatori](https://github.com/mcollina/ascoltatori).

# API

_Source: [lib/qlobber.js](lib/qlobber.js)_
Expand Down
15 changes: 15 additions & 0 deletions bench/add_match_remove.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*jslint node: true */
"use strict";

var Qlobber = require('..').Qlobber,
common = require('./common');

module.exports = function ()
{
var matcher = new Qlobber();

common.add_bindings(matcher);
common.match(matcher);
common.remove_bindings(matcher);
};

68 changes: 68 additions & 0 deletions bench/common/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*globals rabbitmq_test_bindings: false,
rabbitmq_bindings_to_remove: false,
rabbitmq_expected_results_before_remove: false,
rabbitmq_expected_results_after_remove: false,
options: false */
/*jslint node: true */
"use strict";

var expect = require('chai').expect;
require('../../test/rabbitmq.js');

function remove_duplicates_filter(item, index, arr)
{
return item !== arr[index - 1];
}

function remove_duplicates(arr)
{
return arr.sort().filter(remove_duplicates_filter);
}

exports.add_bindings = function(matcher)
{
var i, topic_val;

for (i = 0; i < rabbitmq_test_bindings.length; i += 1)
{
topic_val = rabbitmq_test_bindings[i];
matcher.add(topic_val[0], topic_val[1]);
}
};

exports.match = function(matcher)
{
var i, test, vals;

for (i = 0; i < rabbitmq_expected_results_before_remove.length; i += 1)
{
test = rabbitmq_expected_results_before_remove[i];
vals = matcher.match(test[0]);

if (options.check)
{
expect(remove_duplicates(vals)).to.eql(test[1].sort());
}
}
};

exports.remove_bindings = function(matcher)
{
var i, r, test;

for (i = 0; i < rabbitmq_bindings_to_remove.length; i += 1)
{
r = rabbitmq_test_bindings[rabbitmq_bindings_to_remove[i] - 1];
matcher.remove(r[0], r[1]);
}

if (options.check)
{
for (i = 0; i < rabbitmq_expected_results_after_remove.length; i += 1)
{
test = rabbitmq_expected_results_after_remove[i];
expect(remove_duplicates(matcher.match(test[0]))).to.eql(test[1].sort());
}
}
};

14 changes: 14 additions & 0 deletions bench/match.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*jslint node: true */
"use strict";

var Qlobber = require('..').Qlobber,
common = require('./common');

var matcher = new Qlobber();
common.add_bindings(matcher);

module.exports = function ()
{
common.match(matcher);
};

5 changes: 5 additions & 0 deletions bench/options/check.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/*jslint node: true */

module.exports = {
check: true
};
5 changes: 5 additions & 0 deletions bench/options/default.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/*jslint node: true */

module.exports = {
check: false
};
2 changes: 1 addition & 1 deletion coverage/coverage.json

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions coverage/lcov-report/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
<h1>Code coverage report for <span class="entity">All files</span></h1>
<h2>

Statements: <span class="metric">100% <small>(92 / 92)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Statements: <span class="metric">100% <small>(98 / 98)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Branches: <span class="metric">100% <small>(46 / 46)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Expand All @@ -192,7 +192,7 @@ <h2>
Functions: <span class="metric">100% <small>(10 / 10)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Lines: <span class="metric">100% <small>(92 / 92)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(98 / 98)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;

</h2>
<div class="path"></div>
Expand All @@ -218,34 +218,34 @@ <h2>
<td class="file high" data-value="qlobber/"><a href="qlobber/index.html">qlobber/</a></td>
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">(14&nbsp;/&nbsp;14)</td>
<td data-value="17" class="abs high">(17&nbsp;/&nbsp;17)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">(0&nbsp;/&nbsp;0)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">(1&nbsp;/&nbsp;1)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">(14&nbsp;/&nbsp;14)</td>
<td data-value="17" class="abs high">(17&nbsp;/&nbsp;17)</td>
</tr>

<tr>
<td class="file high" data-value="qlobber/lib/"><a href="qlobber/lib/index.html">qlobber/lib/</a></td>
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
<td data-value="100" class="pct high">100%</td>
<td data-value="78" class="abs high">(78&nbsp;/&nbsp;78)</td>
<td data-value="81" class="abs high">(81&nbsp;/&nbsp;81)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="46" class="abs high">(46&nbsp;/&nbsp;46)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">(9&nbsp;/&nbsp;9)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="78" class="abs high">(78&nbsp;/&nbsp;78)</td>
<td data-value="81" class="abs high">(81&nbsp;/&nbsp;81)</td>
</tr>

</tbody>
</table>
</div>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jun 25 2013 09:23:59 GMT+0100 (BST)</div>
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jul 01 2013 23:08:09 GMT+0100 (BST)</div>
</div>

<script src="prettify.js"></script>
Expand Down
57 changes: 51 additions & 6 deletions coverage/lcov-report/qlobber/Gruntfile.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
<h1>Code coverage report for <span class="entity">qlobber/Gruntfile.js</span></h1>
<h2>

Statements: <span class="metric">100% <small>(12 / 12)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Statements: <span class="metric">100% <small>(15 / 15)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Branches: <span class="metric">100% <small>(0 / 0)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Expand All @@ -192,7 +192,7 @@ <h2>
Functions: <span class="metric">100% <small>(1 / 1)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Lines: <span class="metric">100% <small>(12 / 12)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(15 / 15)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;

</h2>
<div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">qlobber/</a> &#187; Gruntfile.js</div>
Expand Down Expand Up @@ -245,7 +245,22 @@ <h2>
44
45
46
47</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
Expand Down Expand Up @@ -280,6 +295,18 @@ <h2>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
Expand All @@ -290,6 +317,9 @@ <h2>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*jslint node: true */
"use strict";
Expand All @@ -299,7 +329,7 @@ <h2>
grunt.initConfig(
{
jslint: {
files: [ 'Gruntfile.js', 'index.js', 'test/*.js' ],
files: [ 'Gruntfile.js', 'index.js', 'test/*.js', 'bench/**/*.js' ],
directives: {
white: true
}
Expand All @@ -322,8 +352,20 @@ <h2>
&nbsp;
check_cover: {
cmd: './node_modules/.bin/istanbul check-coverage --statement 100 --branch 100 --function 100 --line 100'
},
&nbsp;
coveralls: {
cmd: 'cat coverage/lcov.info | coveralls'
},
&nbsp;
bench: {
cmd: './node_modules/.bin/bench -c 10000 -i bench/options/default.js -k options'
},
&nbsp;
'bench-check': {
cmd: './node_modules/.bin/bench -c 10000 -i bench/options/check.js -k options'
}
}
},
});

grunt.loadNpmTasks('grunt-jslint');
Expand All @@ -335,14 +377,17 @@ <h2>
grunt.registerTask('test', 'cafemocha');
grunt.registerTask('docs', 'apidox');
grunt.registerTask('coverage', ['exec:cover', 'exec:check_cover']);
grunt.registerTask('coveralls', 'exec:coveralls');
grunt.registerTask('bench', 'exec:bench');
grunt.registerTask('bench-check', 'exec:bench-check');
grunt.registerTask('default', ['jslint', 'cafemocha']);
};
&nbsp;</pre></td></tr>
</table></pre>

</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jun 25 2013 09:23:59 GMT+0100 (BST)</div>
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jul 01 2013 23:08:09 GMT+0100 (BST)</div>
</div>

<script src="../prettify.js"></script>
Expand Down
10 changes: 5 additions & 5 deletions coverage/lcov-report/qlobber/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
<h1>Code coverage report for <span class="entity">qlobber/</span></h1>
<h2>

Statements: <span class="metric">100% <small>(14 / 14)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Statements: <span class="metric">100% <small>(17 / 17)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Branches: <span class="metric">100% <small>(0 / 0)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Expand All @@ -192,7 +192,7 @@ <h2>
Functions: <span class="metric">100% <small>(1 / 1)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;


Lines: <span class="metric">100% <small>(14 / 14)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(17 / 17)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;

</h2>
<div class="path"><a href="../index.html">All files</a> &#187; qlobber/</div>
Expand All @@ -218,13 +218,13 @@ <h2>
<td class="file high" data-value="Gruntfile.js"><a href="Gruntfile.js.html">Gruntfile.js</a></td>
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
<td data-value="100" class="pct high">100%</td>
<td data-value="12" class="abs high">(12&nbsp;/&nbsp;12)</td>
<td data-value="15" class="abs high">(15&nbsp;/&nbsp;15)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">(0&nbsp;/&nbsp;0)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">(1&nbsp;/&nbsp;1)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="12" class="abs high">(12&nbsp;/&nbsp;12)</td>
<td data-value="15" class="abs high">(15&nbsp;/&nbsp;15)</td>
</tr>

<tr>
Expand All @@ -245,7 +245,7 @@ <h2>
</div>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jun 25 2013 09:23:59 GMT+0100 (BST)</div>
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jul 01 2013 23:08:09 GMT+0100 (BST)</div>
</div>

<script src="../prettify.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion coverage/lcov-report/qlobber/index.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ <h2>

</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jun 25 2013 09:23:59 GMT+0100 (BST)</div>
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Jul 01 2013 23:08:09 GMT+0100 (BST)</div>
</div>

<script src="../prettify.js"></script>
Expand Down
Loading

0 comments on commit 4764b19

Please sign in to comment.