Skip to content

Commit

Permalink
using acorn, faster from 700ms to 560ms to parse jquery
Browse files Browse the repository at this point in the history
  • Loading branch information
James Halliday committed Nov 19, 2014
1 parent bbb0832 commit cb2148a
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
node_modules
bench/src/jquery.js
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bench/src/jquery.js
7 changes: 7 additions & 0 deletions bench/detect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var detective = require('../');
var fs = require('fs');

var src = fs.readFileSync(__dirname + '/src/jquery.js', 'utf8');
var t0 = Date.now();
var requires = detective(src);
console.log(Date.now() - t0);
18 changes: 18 additions & 0 deletions bench/esprima_v_acorn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
esprima:

$ for i in {1..5}; do node detect.js; done
704
702
704
704
697

acorn:

$ for i in {1..5}; do node detect.js; done
555
552
585
549
583

20 changes: 18 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
var esprima = require('esprima-fb');
var aparse = require('acorn').parse;
var defined = require('defined');

function parse (src, opts) {
if (!opts) opts = {};
return aparse(src, {
ecmaVersion: defined(opts.ecmaVersion, 6),
ranges: defined(opts.ranges, opts.range),
locations: defined(opts.locations, opts.loc),
allowReturnOutsideFunction: defined(
opts.allowReturnOutsideFunction, true
),
strictSemicolons: defined(opts.strictSemicolons, false),
allowTrailingCommas: defined(opts.allowTrailingCommas, true),
forbidReserved: defined(opts.forbidReserved, false)
});
}
var escodegen = require('escodegen');

var traverse = function (node, cb) {
Expand All @@ -22,7 +38,7 @@ var traverse = function (node, cb) {
};

var walk = function (src, opts, cb) {
var ast = esprima.parse(src, opts);
var ast = parse(src, opts);
traverse(ast, cb);
};

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"test": "tap test/*.js"
},
"dependencies": {
"defined": "0.0.0",
"escodegen": "~1.1.0",
"esprima-fb": "4001.1.0-dev-harmony-fb"
},
Expand Down
6 changes: 4 additions & 2 deletions test/files/yield.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
var a = require('a');
var b = yield require('c')(a);
(function * () {
var a = require('a');
var b = yield require('c')(a);
})();

0 comments on commit cb2148a

Please sign in to comment.