是否更快使用本地`foo = require" foo"`而不是`foo = require" foo"`

时间:2016-03-22 16:14:10

标签: lua global local love2d

如果foo是本地的,我的程序是否可以更快地访问存储在foo中的函数/变量? 如果我在多个文件中使用package Time; # Constructor sub new { my $class = shift; my %args = @_; # Create an empty object my $self = bless {}; # Get input arguments my $second = exists $args{'second'} ? $args{'second'} : (localtime)[0]; # Use the accessor to validate and populate object data $self->second($second); return $self; } # Second accessor sub second { my $self = shift; my $second = shift; # Input validation if (defined $second) { if ($second =~ m{^\d+$} && $second >= 0 && $second <= 59) { $self->{'second'} = $second; } else { die "'second' must be an integer between 0 and 59!"; } } return $self->{'second'}; } ,会多次加载foo.lua吗?

1 个答案:

答案 0 :(得分:4)

是。访问本地值可以减少哈希查找次数,并且速度更快。如果它是显而易见的取决于你如何使用它 - 即,如果该表的访问量对于你的程序所做的任何其他事情都相对较高。

require只会加载任何给定的模块一次。正如docs所说:

  

该函数首先查看package.loaded表   确定modname是否已加载。如果是,则要求   返回存储在package.loaded [modname]的值。