@@ -2,6 +2,7 @@ oldConsole = require 'console'
22fs = require ' fs'
33os = require ' os'
44path = require ' path'
5+ { performance } = require ' perf_hooks'
56_ = require ' underscore'
67{ spawn , exec , execSync } = require ' child_process'
78CoffeeScript = 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+
124134buildExceptParser = (callback ) ->
125135 files = fs .readdirSync ' src'
126136 files = (' src/' + file for file in files when file .match (/ \. (lit)? coffee$ / ))
0 commit comments