1 | Promise = require 'bluebird'
|
2 | Benchmark = require 'benchmark'
|
3 | benchmarks = require 'beautify-benchmark'
|
4 | exec = require('child_process').execSync
|
5 | fs = require 'fs-jetpack'
|
6 | path = require 'path'
|
7 | chalk = require 'chalk'
|
8 | extend = require 'extend'
|
9 | sample = ()-> path.join __dirname,'samples',arguments...
|
10 | temp = ()-> path.join __dirname,'temp',arguments...
|
11 | process.env.COFFEE_CACHE_DIR = COFFEE_CACHE_DIR = temp('.cache')
|
12 |
|
13 | fs.dir temp(),empty:true
|
14 |
|
15 |
|
16 | theImporter = null
|
17 | runClean = (type)->
|
18 | deRegister()
|
19 | switch type
|
20 | when 'coffee-script/register' then require('coffee-script/register')
|
21 | when 'coffee-register' then require('../')
|
22 |
|
23 | theImporter()
|
24 |
|
25 |
|
26 | deRegister = ()->
|
27 | delete require.extensions['.coffee']
|
28 | delete require.extensions['.litcoffee']
|
29 | delete require.extensions['.coffee.md']
|
30 | delete require.cache[require.resolve('coffee-script/register')]
|
31 | delete require.cache[require.resolve('coffee-script/lib/coffee-script/register')]
|
32 | delete require.cache[require.resolve('../')]
|
33 | samples = fs.list(sample())
|
34 | for sampleFile in samples
|
35 | delete require.cache[sample(sampleFile)]
|
36 |
|
37 | cached = fs.list(temp('.cache')) or []
|
38 | for cachedFile in cached
|
39 | delete require.cache[temp('.cache',cachedFile)]
|
40 |
|
41 | largeModules = Object.keys(require.cache).filter (path)-> path.includes('simplyimport') or path.includes('simplywatch')
|
42 | for item in largeModules
|
43 | delete require.cache[item]
|
44 |
|
45 | return
|
46 |
|
47 |
|
48 | suite = (name, options)->
|
49 | Benchmark.Suite(name, options)
|
50 | .on 'start', ()-> console.log chalk.dim name
|
51 | .on 'cycle', ()-> benchmarks.add arguments[0].target
|
52 | .on 'complete', ()-> benchmarks.log()
|
53 |
|
54 |
|
55 |
|
56 | suite('3 small modules', {
|
57 | onComplete: ()-> fs.dir temp(),empty:true
|
58 | onStart: ()->
|
59 | theImporter = ()->
|
60 | require('./samples/small1')
|
61 | require('./samples/small2')
|
62 | require('./samples/small3')
|
63 | return
|
64 | })
|
65 | .add 'coffee-script/register', ()->
|
66 | runClean('coffee-script/register')
|
67 |
|
68 | .add 'coffee-register (uncached)', ()->
|
69 | process.env.COFFEE_NO_CACHE = true
|
70 | runClean('coffee-register')
|
71 |
|
72 | .add 'coffee-register (cached)', ()->
|
73 | delete process.env.COFFEE_NO_CACHE
|
74 | runClean('coffee-register')
|
75 |
|
76 |
|
77 | .run()
|
78 |
|
79 |
|
80 |
|
81 | suite('6 small modules', {
|
82 | onComplete: ()-> fs.dir temp(),empty:true
|
83 | onStart: ()->
|
84 | theImporter = ()->
|
85 | require('./samples/small1')
|
86 | require('./samples/small2')
|
87 | require('./samples/small3')
|
88 | require('./samples/small4')
|
89 | require('./samples/small5')
|
90 | require('./samples/small6')
|
91 |
|
92 | })
|
93 | .add 'coffee-script/register', ()->
|
94 | runClean('coffee-script/register')
|
95 |
|
96 | .add 'coffee-register (uncached)', ()->
|
97 | process.env.COFFEE_NO_CACHE = true
|
98 | runClean('coffee-register')
|
99 |
|
100 | .add 'coffee-register (cached)', ()->
|
101 | delete process.env.COFFEE_NO_CACHE
|
102 | runClean('coffee-register')
|
103 |
|
104 |
|
105 | .run()
|
106 |
|
107 |
|
108 |
|
109 | suite('4 medium modules', {
|
110 | onComplete: ()-> fs.dir temp(),empty:true
|
111 | onStart: ()->
|
112 | theImporter = ()->
|
113 | require('./samples/medium1')
|
114 | require('./samples/medium2')
|
115 | require('./samples/medium3')
|
116 | require('./samples/medium4')
|
117 |
|
118 | })
|
119 | .add 'coffee-script/register', ()->
|
120 | runClean('coffee-script/register')
|
121 |
|
122 | .add 'coffee-register (uncached)', ()->
|
123 | process.env.COFFEE_NO_CACHE = true
|
124 | runClean('coffee-register')
|
125 |
|
126 | .add 'coffee-register (cached)', ()->
|
127 | delete process.env.COFFEE_NO_CACHE
|
128 | runClean('coffee-register')
|
129 |
|
130 |
|
131 | .run()
|
132 |
|
133 |
|
134 | suite('2 large modules', {
|
135 | onComplete: ()-> fs.dir temp(),empty:true
|
136 | onStart: ()->
|
137 | theImporter = ()->
|
138 | require('simplyimport/lib/simplyimport')
|
139 | require('simplywatch/lib/simplywatch')
|
140 |
|
141 | })
|
142 | .add 'coffee-script/register', ()->
|
143 | runClean('coffee-script/register')
|
144 |
|
145 | .add 'coffee-register (uncached)', ()->
|
146 | process.env.COFFEE_NO_CACHE = true
|
147 | runClean('coffee-register')
|
148 |
|
149 | .add 'coffee-register (cached)', ()->
|
150 | delete process.env.COFFEE_NO_CACHE
|
151 | runClean('coffee-register')
|
152 |
|
153 |
|
154 | .run()
|
155 |
|
156 |
|
157 |
|
158 |
|
159 |
|
160 |
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 |
|
168 |
|
169 |
|
170 |
|
171 |
|
172 |
|
173 |
|
174 |
|
175 |
|
176 |
|
177 |
|
178 |
|