| // 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; |
| } |