当前位置: 首页 > 编程笔记 >

JavaScript 避免尝试/抓住对性能至关重要的功能

尹弘壮
2023-03-14
本文向大家介绍JavaScript 避免尝试/抓住对性能至关重要的功能,包括了JavaScript 避免尝试/抓住对性能至关重要的功能的使用技巧和注意事项,需要的朋友参考一下

示例

某些JavaScript引擎(例如,Node.jsIgnition + turbofan之前的Chrome的当前版本和较旧版本)无法在包含try / catch块的函数上运行优化器。

如果您需要处理关键性能代码中的异常,则在某些情况下将try / catch保留在单独的函数中可能会更快。例如,某些实现不会优化此功能:

function myPerformanceCriticalFunction() {
    try {
        // 在这里进行复杂的计算
    } catch (e) {
        console.log(e);
    }
}

但是,您可以重构以将慢速代码移到单独的函数(可以优化)中,然后从try块内部调用它。

// 该功能可以优化
function doCalculations() {
    // 在这里进行复杂的计算
}

// 仍未总是进行优化,但是它并没有做太多,因此性能无关紧要
function myPerformanceCriticalFunction() {
    try {
        doCalculations();
    } catch (e) {
        console.log(e);
    }
}

这是显示差异的jsPerf基准测试:https://html" target="_blank">jsperf.com/try-catch-deoptimization。在大多数浏览器的当前版本中,应该没有太大的区别,但是在较新的Chrome和Firefox或IE版本中,在try / catch中调用辅助函数的版本可能会更快。

请注意,应基于代码概要分析谨慎地进行此类优化,并以实际证据为依据。随着JavaScript引擎变得越来越好,它最终可能会损害性能,而不是提供帮助或完全没有区别(但无缘无故地使代码复杂化)。它是帮助,伤害还是没有影响可以取决于许多因素,因此请始终衡量对代码的影响。所有优化都是如此,尤其是像这样的微优化,它取决于编译器/运行时的低级详细信息。

 类似资料:
  • 我正在开发一个永远运行的Java程序,但我不知道如何在不使用“try-catch”的情况下将每个循环延迟一秒钟。我试过了 但它似乎不起作用。有人能帮我吗?

  • 我试图将我从选择语句中得到的所有错误插入到错误表中,但我无法做到这一点。 现在我想看到我的表中的所有错误以及表中正确的所有一次,但我没有得到这个工作? 源系统的数据类型是,我的列是,因为值应该只有INT…所以这是源系统的糟糕设计?

  • 我试图在JAVA中的while循环中使用try-catch语句,只是为了在向nextInt提供字符串输入时捕获异常,我不知道为什么它在第一次错误输入后继续引发异常。 密码 当给出正确的输入时。 但当输入错误时,这种情况会持续无限次。 会有很大的帮助,即使有人回答。 谢谢你。

  • 在ViewHolder模式中将ViewHolder作为静态对性能至关重要吗? ViewHolder对象将每个组件视图存储在布局的标签字段中,因此您可以立即访问它们,而不需要重复查找它们。首先,您需要创建一个类来保存您准确的视图集。例如:

  • 问题 你在类中需要重复的定义一些执行相同逻辑的属性方法,比如进行类型检查,怎样去简化这些重复代码呢? 解决方案 考虑下一个简单的类,它的属性由属性方法包装: class Person: def __init__(self, name ,age): self.name = name self.age = age @property def n

  • 问题内容: 我以为这是一个简单的技巧,但是我已经搜索了几个小时,找不到合适的搜索词。我希望有一个普通的多重选择框(),但我不想用户必须按住Control键才能进行多重选择。 换句话说,我希望单击鼠标左键来切换光标下方的元素,而不更改其他任何元素。换句话说,我想要的东西看起来像一个组合列表框,但表现得像一组复选框。 有人可以建议用Javascript做到这一点的简单方法吗?谢谢。 问题答案: 基本上