perl – 只加载模块的一部分来节省资源?
我正在阅读O’Reilly的Perl Objects,References&模块,更具体地说是关于模块的部分.它声明当使用Some :: Module时,您可以指定导入列表.从它的解释看来,使用这个列表的唯一好处是为了保持命名空间的清洁.换句话说,如果主程序包中有子程序some_sub,并且加载的模块有一个同名的子程序,则子程序将被覆盖.但是,如果您指定导入列表并从此列表中省略some_sub,则不会发生此冲突.然后你可以通过声明它来运行模块中的some_sub:Some :: Module :: some_sub.
除了上面描述的那个之外还有其他好处吗?我问这个是因为在某些情况下你加载了具有大量功能的模块,即使你只对它的一些方法感兴趣.起初我认为通过指定一个导入列表,你只加载那些方法,而不是用你不会使用的方法来膨胀内存.但是,从上面的解释看来并非如此.您是否可以通过仅加载模块的部分来有选择地节省资源?或者Perl是否足够智能,在编译时无需程序员干预? 解决方法
请注意,“导入列表”只是一种约定.模块的导入功能可以随意使用此列表执行任何操作,您可以看到它(ab)被许多所谓的pragma模块使用.因此,部分加载不一定以任何方式使用.例如,模块可以加载重要的函数存根,无论您是否导入它们,并在实际的第一次调用时动态加载大量实现.
因此,使用部分导入列表可能,或者实际上可能不会保存任何资源 – 这完全取决于所使用模块的实际实现. 虽然require和use确实加载了整个.pm文件 – 该文件可能只是一个轻量级的存根和加载器,用于位于其他地方的实际代码.还有一个惯例是调用那些模块 模块可以自由地以任何方式实现部分加载.以下是模块如何节省资源的一些可能性: > AUTOLOAD(带有免费的AutoLoader,AutoSplit和SelfLoader模块). 此列表中的所有内容都可以在幕后自动运行,通过使用导入列表公开,或以其他完全任意的方式工作/调用.再一次,它完全取决于模块的实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Delphi中编程实现TWebBrowser查找及上一个、下一个功能
- 使用jaccard相似性的Python Pandas距离矩阵
- java – 自定义authenticationFilter Spring Security 3.2
- 自golang纳秒时间戳以来的时间
- java – 级联将实体对象与外键一起保存为复合主键的一部分
- vb.net – 在tabcontrol MouseClick事件上单击了哪个选项卡
- Lua 使用过程的一个理解(lua_pcall(L, 0, 0, 0);)
- Perl 对象是函数的第一个参数
- perl – 什么时候应该使用包变量和词法变量(有什么区别)?
- delphi – 如何“扫描”当前安装的VCL组件的完整列表