【问题标题】:Names vs anonymous functions in TypeScriptTypeScript 中的名称与匿名函数
【发布时间】:2016-07-12 06:08:02
【问题描述】:

就性能和仅性能而言,哪一个更好?

1)

function GameLoop()
{
    // Some heavy calculations
    requestAnimationFrame(GameLoop);     
}
requestAnimationFrame(GameLoop);

2)

function GameLoop()
{
    // Some heavy calculations
    requestAnimationFrame(function()
    {
       GameLoop();
    });
}
requestAnimationFrame(GameLoop);

【问题讨论】:

  • 你测试了吗?你得到了什么样的结果?
  • 两者在功能上都相同,但我需要知道这两者在效率方面的不同之处。
  • Rant ;-) 那么,你为什么不测试一下呢?
  • @s952163 因此我已经对其进行了测试,这里有一些有趣的结果:根据 basarat 的回答,第二种方法更好,但正如我测试过的那样,第二种方法似乎更强调垃圾收集第一个。分析第二个会在 chrome 的开发工具中创建锯齿形曲线,但第一个的曲线不那么尖锐。基本上,即使在两种情况下累积的“垃圾”数量保持不变,“垃圾”在第一个中累积也需要更多时间。现在我更困惑了……
  • 确实很有趣。我在性能方面的经验是,在许多情况下,瓶颈是非常不直观的,并且测量非常重要。正确测量更是如此。我认为您现在应该能够通过包含您的发现来回答您自己的问题。

标签: performance typescript game-loop


【解决方案1】:

仅性能和性能

1

因为在2 中,您在每次迭代时都会创建一个新函数。

更多:在现代虚拟机中,他们将意识到 2 会一次又一次地创建相同的功能,并且会得到优化,因此对长期性能的影响将是最小的。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多