【发布时间】:2016-04-12 22:07:49
【问题描述】:
我目前正在优化我的 HTML/Javascript 游戏。我正在使用谷歌浏览器上的分析器来获取一些关于哪些函数使用时间最多的信息。一切似乎都很好。除非游戏卡顿/滞后,否则我可以在分析器中看到一个不属于我的代码的函数。我看起来像this。
这样的功能多次出现。有时它们需要长达 100 毫秒,这导致我的游戏卡顿很多。如何找到这些函数的来源?
编辑:我的游戏包含很多这样的功能:
socket.on('1', function (data) {
...
});
我的 Gameloop 看起来像这样:
var lastTime = 0;
function prepareUpdate(callback) {
var now = Date.now();
var nextTime = mathMax(lastTime + (1000 / targetFPS), now);
return setTimeout(function() {
callback(lastTime = nextTime);
}, nextTime - now);
};
function callUpdate() {
prepareUpdate(callUpdate);
updateGameLoop();
};
callUpdate();
这些被认为是有害的吗?
【问题讨论】:
-
你怎么能确定它不是你游戏的一部分?
-
你在代码中使用了匿名函数吗?
-
回调函数通常是匿名的,因此可能是其中之一,只需命名所有回调,您应该能够更清楚地了解被调用的内容。它还有助于在压缩代码库之前对其进行概要分析,以便您获得完整的函数名称而不是 1 个字符的函数名称。
-
也可以是 IIFE...
-
它不在我的代码中。我可能是我的代码所引用的东西:库或类似的东西。我的问题是;我怎么知道它来自哪里?