From 958505853ebd24fd3c0dc2bc6f6fb0615a48c8b7 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 10 Jan 2015 21:33:25 -0800 Subject: 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. --- js/lib/blocks.js | 9 +++++++-- js/lib/html.js | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'js/lib') 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; }; -- cgit v1.2.3