module: reduce syscalls during require search
authorPierre Inglebert <pierre.inglebert@gmail.com>
Mon, 8 Jun 2015 21:44:18 +0000 (23:44 +0200)
committerJeremiah Senkpiel <fishrock123@rocketmail.com>
Thu, 18 Jun 2015 00:24:29 +0000 (17:24 -0700)
require() now checks that the path exists before searching
further in it.

PR-URL: https://github.com/nodejs/io.js/pull/1920
Reviewed-By: Isaac Z. Schlueter <i@izs.me>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
lib/module.js

index 31f2063..9eba6bf 100644 (file)
@@ -129,7 +129,7 @@ const noopDeprecateRequireDot = util.deprecate(function() {},
 Module._findPath = function(request, paths) {
   var exts = Object.keys(Module._extensions);
 
-  if (request.charAt(0) === '/') {
+  if (path.isAbsolute(request)) {
     paths = [''];
   }
 
@@ -142,6 +142,8 @@ Module._findPath = function(request, paths) {
 
   // For each path
   for (var i = 0, PL = paths.length; i < PL; i++) {
+    // Don't search further if path doesn't exist
+    if (paths[i] && internalModuleStat(paths[i]) < 1) continue;
     var basePath = path.resolve(paths[i], request);
     var filename;