diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-01-10 21:33:25 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-01-10 21:34:04 -0800 |
commit | 958505853ebd24fd3c0dc2bc6f6fb0615a48c8b7 (patch) | |
tree | eb949684782940565b5e1c4dbadbbaa6cdddbff8 /js/lib | |
parent | f5476eb652b7d69ed25c858a4d757b9313b40b67 (diff) |
Added options to DocParser.
So far only 'time' is supported.
'time' now gives a breakdown of block parsing, inline parsing,
and rendering.
Currently the ratio is
block parsing: 725ms
inline parsing: 332ms
rendering: 213ms
so perhaps block.js is the best place to look for further optimizations.
Diffstat (limited to 'js/lib')
-rw-r--r-- | js/lib/blocks.js | 9 | ||||
-rw-r--r-- | js/lib/html.js | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/js/lib/blocks.js b/js/lib/blocks.js index 05de246..c2d14d7 100644 --- a/js/lib/blocks.js +++ b/js/lib/blocks.js @@ -671,6 +671,7 @@ var Document = function() { // The main parsing function. Returns a parsed document AST. var parse = function(input) { "use strict"; + if (this.options.time) { console.time("block parsing"); } this.doc = Document(); this.tip = this.doc; this.refmap = {}; @@ -686,13 +687,16 @@ var parse = function(input) { while (this.tip) { this.finalize(this.tip, len); } + if (this.options.time) { console.timeEnd("block parsing"); } + if (this.options.time) { console.time("inline parsing"); } this.processInlines(this.doc); + if (this.options.time) { console.timeEnd("inline parsing"); } return this.doc; }; // The DocParser object. -function DocParser(){ +function DocParser(options){ "use strict"; return { doc: Document(), @@ -706,7 +710,8 @@ function DocParser(){ incorporateLine: incorporateLine, finalize: finalize, processInlines: processInlines, - parse: parse + parse: parse, + options: options || {} }; } diff --git a/js/lib/html.js b/js/lib/html.js index a985039..847ed98 100644 --- a/js/lib/html.js +++ b/js/lib/html.js @@ -50,6 +50,8 @@ var renderNodes = function(block) { var options = this.options; + if (options.time) { console.time("rendering"); } + while ((event = walker.next())) { entering = event.entering; node = event.node; @@ -225,6 +227,7 @@ var renderNodes = function(block) { } } + if (options.time) { console.timeEnd("rendering"); } return buffer; }; |