require node.js模块在单个函数中与全局函数中对性能的影响
Impact on performance with require node.js module in individual functions versus globally
我有一个node.js文件,里面有几个函数。假设每个函数都需要下划线模块。在每个函数中添加var underS = require("underscore");
与在顶部全局声明单个var underS = require("underscore");
相比,会对性能产生什么影响?哪个性能更好?
模块在第一次加载后被缓存。这意味着(除其他外)如果需要('fo')的每个调用都将解析为相同的文件,那么它将返回完全相同的对象。
所以基本上不会,它不会影响性能。
我只想在精确答案的基础上添加一个广义答案。
永远不要让性能影响代码库的广泛组织,除非你有充分的(经过衡量的)理由不这样做。
在这种情况下,"测量"并不意味着某种微观基准。它意味着在实际项目的上下文中进行描述。
在我职业生涯的早期忽视这条规则让我很难过。它并没有帮助我编写高效的代码,它只是使我的代码库难以维护,也难以爱上,从而将生产力降至最低(我认为这是一种激励人的品质,但却经常被忽视)。
所以,除了"不"之外,你不应该担心导入模块的性能,我更强烈地建议,"不",你无论如何都不应该担心,即使它确实影响了性能。
如果你想设计性能,性能关键的循环代码往往只占代码库的一小部分。人们很容易认为这是一堆效率低下的小问题,积累起来会产生瓶颈,但养成分析的习惯会很快消除这种迷信。在代码库的这一小部分中,您可能会非常详细,甚至可能在本机代码中实现其中的一些。在那里,对于代码库的这一小部分,你可能会研究计算机体系结构、缓存位置的面向数据的设计、SIMD等。你可以非常精细地优化这一小段代码,这实际上构成了一个分析热点。
但计算速度的关键首先是你自己的开发人员通过缩小并专注于更重要的优先级来高效地生成和维护代码的速度。这为你争取了时间来放大那些实际上构成测量热点的小部分,并为你提供了时间来尽可能多地优化它们。首先也是最重要的是生产力,这来自于一个在竞争性能通常是追求品质之一的领域工作的人(网格处理、光线跟踪、图像处理等)。
- 正在全局范围中查找JavaScript函数
- 在javascript函数中设置全局变量
- javascript无法重新定义函数内部的全局对象
- javascript 中的全局函数
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- Javascript,从静态函数中打印全局对象
- 全局窗口热键在最小化chrome窗口时调用js函数
- 创建要在其他函数中使用的全局变量
- 从全局函数调用Ember控制器上的方法
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- jQuery-函数全局变量
- jQuery - 如何使这个javascript函数全局化,以便其他函数可以访问它
- JS函数/全局变量的作用域
- Javascript;如何使函数全局可访问
- 全局在什么(函数(全局){一些代码.(这个)做
- 如何使用 (函数(全局) { .. })(这);.
- 我如何使变量newUser定义在一个函数全局
- 函数(全局){..}(this)的工作方式
- 我如何使我的变量包含在这个函数全局