相关疑难解决方法(0)

JavaScript是否提供高分辨率计时器?

JavaScript是否提供高分辨率计时器?

我从头开始编写了一些游戏引擎,一些是C语言,一些是Java,一些是Flash.在动画和交互式图形方面,我总是遵循相同的基本模型.使用以下设计创建基本类/结构:

void init() { /* Called once, preload essential resources here. */ }
void update(double time) { /* Updates game/animation state using high resolution time. */ }
void render(double time) { /* Updates screen graphics using high resolution time. */ }

void run()
{
    double time;
    init();
    while (!done)
    {
        time = queryTime();
        update(time);
        render(time);
    }
}
Run Code Online (Sandbox Code Playgroud)

时间对平滑动画和游戏状态计算非常重要.在本机代码Windows中,我使用QueryPerformanceCounter()QueryPerformanceFrequency()执行queryTime()每个游戏循环中的角色并将时间传递给更新/渲染.在Java中,我使用System.nanoTime().

什么是JavaScript中的等价物?也就是说,某些函数queryTime()返回具有高精度(亚毫秒)的时间值.从我所听到的,你可以用JavaScript获得的最佳准确度大约是15毫秒......这对动画来说太可怕了.

javascript animation

40
推荐指数
4
解决办法
3万
查看次数

为什么while和do ...之间的巨大时差在JavaScript中

while循环

测试条件,如果是,则执行代码

do..while循环

第一次执行.然后测试并执行.

所以之间的差异while,并do..while进行,程序在同时,一个试验进行比同时做多

那是

如果一个循环从1到50在while一个语句的循环中执行,它将有51个测试(50个真和1个假),语句将执行50次.

同样

如果一个循环从1到50在do..while循环中执行一个语句,它将有50个测试(第一个测试将不会执行),语句将执行50次.

所以,只有一个测试/检查少.而已.

但是当我测试执行所花费的时间时,它显示出很大的差异.

function whileFn() {
  var i = 0;
  while (i < 10) {
    document.write(i);
    i++;
  }
}

function doWhileFn() {
  var i = 0;
  do {
    document.write(i);
    i++;
  } while (i < 10)
}

console.time('whileFn');
whileFn();
console.timeEnd('whileFn');

document.write('<br/>');

console.time('doWhileFn');
doWhileFn();
console.timeEnd('doWhileFn');
Run Code Online (Sandbox Code Playgroud)

正如您在图像和代码示例中看到那样,while循环花费do while了15毫秒,而只花了5毫秒.

这种巨大差异背后的原因是什么?

测试10个元素

在此输入图像描述

按照@pid的建议更新

测试1000

在此输入图像描述

需要23mS进行1次额外测试

测试10000

在此输入图像描述

一次额外测试多397.91 mS

进行测试

Chrome(58.0.3029.110) …

javascript while-loop execution-time do-while

8
推荐指数
1
解决办法
1455
查看次数

Node.js到Socket.io时间延迟

我使用Node.js(v0.12.4)和Socket.io(1.3.2)在实时交易应用程序中工作.在那时,当从Node.js向GUI(Socket.Io)发出响应时,我将面临几乎(100ms)的时间延迟.

我不清楚为什么在从Node.js向GUI(Socket.IO)发送数据时存在时间延迟.

这发生在生产现场.我们也试图在生产服务器位置调试此问题,因为网络延迟.但结果相同.

请有人帮我这个吗?

javascript websocket node.js socket.io

6
推荐指数
1
解决办法
1313
查看次数

Node.js 中的 process.hrtime() 和 process.hrtime.bigint() 函数指的是什么时间?

process.hrtime()是一个遗留版本的process.hrtime.bigint()方法

process.hrtime();                     // -> [27511, 516453000]   (seconds, remaining nanoseconds)
process.hrtime.bigint();              // -> 27511516453000n      (nanoseconds)
Run Code Online (Sandbox Code Playgroud)
  • 27511516453000 纳秒是 7.6420879036111113 小时

    当我测试时,时间是 11:54 UTC 和 14:54 Locale Time

  • 7.64 小时不是指当前时间,那么 7.64 小时指的是什么?

node.js

4
推荐指数
1
解决办法
2725
查看次数