Skip to content

Commit f505b9b

Browse files
add a perf counter for grammar build time
1 parent 1089999 commit f505b9b

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Cakefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ oldConsole = require 'console'
22
fs = require 'fs'
33
os = require 'os'
44
path = require 'path'
5+
{ performance } = require 'perf_hooks'
56
_ = require 'underscore'
67
{ spawn, exec, execSync } = require 'child_process'
78
CoffeeScript = require './lib/coffeescript'
@@ -109,6 +110,8 @@ buildParser = ->
109110
helpers.extend global, require 'util'
110111
require 'jison'
111112

113+
startParserBuild = performance.now()
114+
112115
# Gather summary statistics about the grammar.
113116
parser = require('./lib/coffeescript/grammar').parser
114117
{symbols_, terminals_, productions_} = parser
@@ -118,9 +121,16 @@ buildParser = ->
118121
numProds = countKeys productions_
119122
console.info "parser created (#{numSyms} symbols, #{numTerms} terminals, #{numProds} productions)"
120123

124+
loadGrammar = performance.now()
125+
console.info "loading grammar: #{loadGrammar - startParserBuild} ms"
126+
121127
# We don't need `moduleMain`, since the parser is unlikely to be run standalone.
122128
fs.writeFileSync 'lib/coffeescript/parser.js', parser.generate(moduleMain: ->)
123129

130+
parserBuildComplete = performance.now()
131+
console.info "parser generation: #{parserBuildComplete - loadGrammar} ms"
132+
console.info "full parser build time: #{parserBuildComplete - startParserBuild} ms"
133+
124134
buildExceptParser = (callback) ->
125135
files = fs.readdirSync 'src'
126136
files = ('src/' + file for file in files when file.match(/\.(lit)?coffee$/))

0 commit comments

Comments
 (0)