Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用许多Javascript函数_Javascript_Performance_Function - Fatal编程技术网

使用许多Javascript函数

使用许多Javascript函数,javascript,performance,function,Javascript,Performance,Function,我目前正在使用一个个人库,它积累了相当多的“助手”函数,这些函数在我的体系结构中用于各种目的。当它们只有几个时,我将它们保存在一个文件和对象中,这样我就可以像这样访问它们: tools.parseSomething(obj); 这非常方便,并且使代码仍然具有一定的组织性和可读性。问题是,包含这些方法的文件(和对象)正在增长到一个巨大的规模,需要清理。我正在考虑为函数的“类别”创建单独的文件,并将它们放在这些文件中,以便像这样访问它们: tools.env.getEnvironmentInfo(

我目前正在使用一个个人库,它积累了相当多的“助手”函数,这些函数在我的体系结构中用于各种目的。当它们只有几个时,我将它们保存在一个文件和对象中,这样我就可以像这样访问它们:

tools.parseSomething(obj);
这非常方便,并且使代码仍然具有一定的组织性和可读性。问题是,包含这些方法的文件(和对象)正在增长到一个巨大的规模,需要清理。我正在考虑为函数的“类别”创建单独的文件,并将它们放在这些文件中,以便像这样访问它们:

tools.env.getEnvironmentInfo();
我对这种方法的关注不是可读性,而是查找的性能。从我最近读到的内容来看,对象查找不再是过去的主要瓶颈,但我仍然希望我的库尽可能高效(可读性第二)

我还考虑过使用单独的文件,但将所有函数添加到父对象中,这样它们仍然可以按原始方式访问,但可以单独存储。包含函数的对象是“静态”的,并且作为单个实例存在


我的问题是,关于我所解释的,存储和使用大量帮助函数的最有效方法是什么?我所说的效率是指性能,这是我目前唯一关心的领域。

我同意这里正在进行过早的优化,但这不是你的问题

我认为,与其考虑松散相关的“做一些相关事情”的scriptlet,不如建议一个更丰富的对象模型,它可以是有状态的,并且可能会公开您需要的行为,同时隐藏一些您认为必要的优化,如缓存查找等

因此,与其使用
getEnvironmentInfo
,不如使用一个
Environment
实例,例如,该实例已经获取了一些参数并存储在内部,以便后续调用更快。从那里你可以创造新的环境或任何其他适合你的行为


无论用哪种语言,这都是很好的编程实践。

不存在吗?我已经读到,V8引擎背后有一些漂亮的功能,可以比典型的字典式引用更智能地处理对象属性查找,但我不确定每个JS引擎是否都有类似的功能。当然
something.test()
something.internal.more.test()
快吗?虽然嵌套对象确实如此,但在这些执行速度下,差异实际上可以忽略不计。通过优化函数,您将获得更高的效率。@Perry它不存在[对于存在的大多数代码中的任何有意义的指标而言]。不要把时间浪费在这些微观优化上。如果有重要的代码,它仍然“不存在”,直到有一个性能测试用例显示它存在。如果没有性能指标,就无法判断附加属性访问在总体方案中会产生什么影响(例如,JIT/优化在哪个引擎中的具体代码),也没有一种方法可以证明这些变化会带来性能的积极改善。@Cerburs我在Chrome和IE9中进行了性能测试。而在铬合金中,差异可以忽略不计,在IE中,额外的一层“慢21%”。该库在IE中被大量使用,但我想在我的情况下不太可能有2300万次调用。@user2864740:看看我刚刚发布的jsPerf。当嵌套对象更深时,执行速度会受到明显的影响。与未优化的函数相比,差异可能微不足道,但它确实存在。说得再好不过了+感谢你的洞察力。我只是以
getEnvironmentInfo()
为例,因为一些“一次性”函数会缓存它们的计算值。我已经尝试过尽可能地“类化”,以保持一切整洁,避免重复处理相同的信息,但目前仍然需要我目前拥有的函数库。