diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/Closures/closures.js')
-rw-r--r-- | deps/v8/test/js-perf-test/Closures/closures.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/Closures/closures.js b/deps/v8/test/js-perf-test/Closures/closures.js new file mode 100644 index 0000000000..38161a4d7f --- /dev/null +++ b/deps/v8/test/js-perf-test/Closures/closures.js @@ -0,0 +1,43 @@ +// Copyright 2015 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +new BenchmarkSuite('Closures', [1000], [ + new Benchmark('ShortLivingClosures', false, false, 0, + ShortLivingClosures, ShortLivingClosuresSetup, ShortLivingClosuresTearDown) +]); + +// ---------------------------------------------------------------------------- + + +// The pattern is this example is very common in Node.js. +var fs = { + readFile: function(filename, cb) { + cb(null, {length: 12}); + } +}; + + +function printLength (filename) { + fs.readFile(filename, foo); + + function foo (err, buf) { + if (err) return; + for (var j = 0; j<1000; j++) { + // Do some work to make the optimization actually worth while + buf.length++; + } + return (buf.length); + } +} + + +function ShortLivingClosuresSetup() {} + +function ShortLivingClosures() { + result = printLength('foo_bar.js'); +} + +function ShortLivingClosuresTearDown() { + return result == 1012; +} |