好的,所以我相信我可以通过代码最好地描述这个问题,所以这里是
<code>
好的,所以澄清一下我不想在实际函数var clicks = 0;
//function to calculate
function clicking(){
clicks += 1;
}
//function to calculate fps where fn is the name of the function
function FPS(fn){
//do stuff
}
中添加变量我希望能够调用类似的东西
clicking
并让函数返回一个值,例如
FPS(clicking)
然后我可以显示返回的数字
var fps = FPS(clicking);
修改 我知道目前的代码似乎很愚蠢,但这只是示例编码而不是我实际使用的
答案 0 :(得分:2)
这不是很实际,因为Date.now()
也使用时间。
function FPS(fn) {
var startTime = Date.now();
fn();
var endTime = Date.now();
return endTime - startTime;
}
function longClick() {
var abc = 0;
for (var i = 0; i < 100000000; i++) {
abc++;
}
}
var fps = FPS(longClick);
console.log((fps / 1000) + ' seconds');
FPS 通常是指每秒帧数,这是刷新屏幕图像的频率。
为队友选择一个更全面的名称,其中包含 Elapsed 等关键字。
答案 1 :(得分:0)
回答原来的问题:
好的,所以澄清我不想在实际功能中添加一个变量点击我希望能够调用FPS(点击)这样的函数并让函数返回一个值,例如
首先,您需要从clicking
函数或您计划传递给FPS
方法的任何函数返回一个值。
var clicks = 0;
//function to calculate
function clicking(){
clicks += 1;
return clicks;
}
然后在FPS
函数中,您还需要返回该值。
//function to calculate fps where fn is the name of the function
function FPS(fn){
//do stuff
return fn();
}
答案 2 :(得分:0)
如果你想知道“功能运行的速度”:
/**
* Return the execution time of a function
* @param {Function} fn The function to execute
*/
function FPS(fn) {
var start = new Date().getTime();
fn();
var end = new Date().getTime();
return end - start;
}
答案 3 :(得分:0)
这里有一些伪代码可以获得我认为你正在寻找的东西 - 假设你有一个游戏循环并且你在游戏循环中调用FPS。正如我所说 - 有关游戏细节(如组件)的更多细节会有所帮助。
var clicks = 0;
var fps = 0;
var elapsedTime;
//function to calculate
function clicking(){
clicks += 1;
}
//function to calculate fps where fn is the name of the function
function FPS(fn){
// Get start time
//call fn
// Get stop time
// var delta = stop time - start time
// elapsedTime += delta;
// fps++;
// If elapsedTime > 1 second
// then while elapsedTime > 1 second... elapsedTime -= 1 second and fps = 0;
// We use the while loop here in the event that it took more than 1 second in the call
// But you could just reset elapsedTime back to 0
}
此FPS(fn)将在游戏中的任何位置调用,而不是原始函数,以查看该函数被调用的次数。
答案 4 :(得分:0)
你可以让FPS返回DOMHighResTimeStamp(适用于IE 10 +,Firefox 15 +,Chrome 20 +,Safari 8+),它将以毫秒为单位返回时间。如果您希望它在旧版浏览器中工作,您可以使用Date(new Date()
)对象替换精确计时,但Date对象只会以秒为单位(而不是毫秒):
var clicks = 0;
//function to calculate
function clicking(){
clicks += 1;
}
//function to calculate fps where fn is the name of the function
function FPS(fn){
var start = performance.now();
fn();
return performance.now() - start;
}
console.log("Function took " + FPS(clicking) + " milliseconds!");