使用本地 `foo = require "foo"` 是否比 `foo = require "foo"` 更快?

如果将 foo 声明为本地变量,我的程序是否能更快地访问存储在 foo 中的函数/变量? 如果在多个文件中使用 local foo = require "foo"foo.lua 是否会多次加载?

点赞
用户936986
用户936986

是的。访问本地值会减少一个哈希查找并且会更快。能否注意到此优化取决于使用方式 - 即,如果对该表的访问次数相对于程序的其他部分比较高,则可能会注意到此优化。

require 将仅加载每个模块一次。正如 文档 中所述:

该函数首先查找 package.loaded 表,以确定是否已经加载了 modname。如果是,则 require 返回 package.loaded[modname] 存储的值。

2016-03-22 16:55:02