@@ -2,6 +2,7 @@ oldConsole = require 'console'
2
2
fs = require ' fs'
3
3
os = require ' os'
4
4
path = require ' path'
5
+ { performance } = require ' perf_hooks'
5
6
_ = require ' underscore'
6
7
{ spawn , exec , execSync } = require ' child_process'
7
8
CoffeeScript = require ' ./lib/coffeescript'
@@ -109,6 +110,8 @@ buildParser = ->
109
110
helpers .extend global , require ' util'
110
111
require ' jison'
111
112
113
+ startParserBuild = performance .now ()
114
+
112
115
# Gather summary statistics about the grammar.
113
116
parser = require (' ./lib/coffeescript/grammar' ).parser
114
117
{symbols_ , terminals_ , productions_ } = parser
@@ -118,9 +121,16 @@ buildParser = ->
118
121
numProds = countKeys productions_
119
122
console .info " parser created (#{ numSyms} symbols, #{ numTerms} terminals, #{ numProds} productions)"
120
123
124
+ loadGrammar = performance .now ()
125
+ console .info " loading grammar: #{ loadGrammar - startParserBuild} ms"
126
+
121
127
# We don't need `moduleMain`, since the parser is unlikely to be run standalone.
122
128
fs .writeFileSync ' lib/coffeescript/parser.js' , parser .generate (moduleMain : -> )
123
129
130
+ parserBuildComplete = performance .now ()
131
+ console .info " parser generation: #{ parserBuildComplete - loadGrammar} ms"
132
+ console .info " full parser build time: #{ parserBuildComplete - startParserBuild} ms"
133
+
124
134
buildExceptParser = (callback ) ->
125
135
files = fs .readdirSync ' src'
126
136
files = (' src/' + file for file in files when file .match (/ \. (lit)? coffee$ / ))
0 commit comments