mirror of https://github.com/lukechilds/node.git
Browse Source
require is caching the compiled code but still stating the filenames. https://groups.google.com/d/topic/nodejs-dev/QGGlrvLDHVs/discussionv0.7.4-release
Ryan Dahl
14 years ago
1 changed files with 44 additions and 0 deletions
@ -0,0 +1,44 @@ |
|||
// We've experienced a regression where the module loader stats a bunch of
|
|||
// directories on require() even if it's been called before. The require()
|
|||
// should caching the request.
|
|||
var common = require('../common'); |
|||
var fs = require('fs'); |
|||
var assert = require('assert'); |
|||
|
|||
var counter = 0; |
|||
|
|||
// Switch out the two stat implementations so that they increase a counter
|
|||
// each time they are called.
|
|||
|
|||
var _statSync = fs.statSync; |
|||
var _stat = fs.stat; |
|||
|
|||
fs.statSync = function() { |
|||
counter++; |
|||
return _statSync.apply(this, arguments); |
|||
}; |
|||
|
|||
fs.stat = function() { |
|||
counter++; |
|||
return _stat.apply(this, arguments); |
|||
}; |
|||
|
|||
// Load the module a.js once. It should become cached.
|
|||
|
|||
var m = common.fixturesDir + '/a.js'; |
|||
require(m); |
|||
|
|||
console.log("counterBefore = %d", counter); |
|||
var counterBefore = counter; |
|||
|
|||
// Now load the module a bunch of times.
|
|||
// stat should not be called.
|
|||
for (var i = 0; i < 100; i++) { |
|||
require(m); |
|||
} |
|||
|
|||
console.log("counterAfter = %d", counter); |
|||
var counterAfter = counter; |
|||
|
|||
assert.equal(counterBefore, counterAfter); |
|||
|
Loading…
Reference in new issue