- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
v8 shell 执行以下代码:
var msleep = n => Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n);
var t = Date.now();msleep(1000);Date.now() - t;
输出:
1005
为什么会有几毫秒的误差?
Here是一个 Rust 的例子,误差仅为 0.1 毫秒。
最佳答案
也许您的机器正忙?这就是为什么任何事情都可能比预期花费更长的时间的主要原因。
请注意,您不仅测量超时,还测量函数调用、对象创建(可以触发短暂的 GC 事件)、消息循环泵送和系统库调用。
后者尤其可以解释这一点:在某些操作系统上,默认计时器分辨率比 1ms 更粗,因此当请求的超时时间耗尽时,内核可能会等到下一个计时器滴答声才通知进程。
FWIW,我无法重现您的观察结果。我看到的大多数是 1000,有时是 1001,这几乎是我所期望的:
d8> var msleep = n => Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n);
d8> function measure() { var t = Date.now(); msleep(1000); return (Date.now() - t); }
d8> for (var i = 0; i < 30; i++) print(measure());
1000
1000
1001
1000
1000
1000
1000
1001
1000
1000
1000
1000
1001
1000
1000
1000
1000
1001
1000
1000
1000
1000
1000
1000
1000
1000
1000
1001
1000
1000
一般不建议依赖超时的准确性。例如。如果您想构建一个不会漂移的秒表,请获取开始时间并与之比较,如下所示:
var start_time;
function start_stopwatch() {
start_time = Date.now();
window.setTimeout(update_display, 1000);
}
function update_display() {
var current_time = Date.now();
call_display_function(current_time - start_time);
window.setTimeout(update_display, 1000); // Could be 876 for all we care.
}
而不是:
var elapsed;
function start_stopwatch_DONT_DO_THIS() {
elapsed = 0;
window.setTimeout(update_display_DONT_DO_THIS, 1000);
}
function update_display_DONT_DO_THIS() {
elapsed += 1000; // This is going to be inaccurate!
call_display_function(elapsed);
window.setTimeout(update_display_DONT_DO_THIS, 1000);
}
关于javascript - v8 Atomics.wait timeout 为什么误差这么大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51760561/
我正在使用 heroku 来托管支持 iOS 应用程序的 ruby on rails 应用程序。我有一个可能会运行很长时间的请求,我需要能够在我的请求被终止之前捕获超时。我正在使用 Timeout
我在 https://stackoverflow.com/questions/517219?tab=oldest#tab-top 找到了我认为应该完美运行的东西但是,它对我不起作用。 我在 Windo
我有这段代码: begin complete_results = Timeout.timeout(4) do results = platform.search(artist,
我正在开发一个音乐训练游戏,我使用 Unity 3D 来创建它。 它会发出随机音符。 问题是,我的 android 设备只有五个“屏幕熄灭前的时间”选项,其中最长的是 10 分钟。 所以 10 分钟后
我运行以下代码来捕获任何可能挂起的 SQL 语句。在尝试对此进行测试时,我编写了一个非常优化的 sql 语句,它需要一分钟的时间才能运行。我在 activerecord execute sql 语句周
由于 Faraday 没有文档,我无法在任何地方找到它。法拉第什么是“timeout”,什么是“open timeout”? 最佳答案 如果您在 https://github.com/lostisla
我想对 Angular.js $timeout 进行单元测试,以检查是否已使用正确的持续时间/延迟值调用它。 断言看起来像这样: expect($timeout).toHaveBeenCalledWi
我正在循环一个列表并对列表中的每个成员执行一些操作。如果某个成员花费了太多时间(在本例中为 1 秒),我打算跳过它。但是,try 语句内的 block 始终处于处理状态,并且永远不会超时。我不明白为什
我有一个程序可以打印出通过或失败。我想检测卡在那里的程序并回显“超时” 我写了这样一个脚本: #!/bin/bash echo -n 'test' && timeout 5 ./mytest | gr
我有一个 Sinatra 应用程序。我正在使用 Rack::Test 对其进行测试。我想确保将查询字符串参数传递给 Timeout::timeout()。 我认为 expect_any_instanc
相同的脚本不同的错误。这可能更多地与我的网络有关,而不是我的代码。脚本如下: #!/usr/bin/env ruby -rubygems require File.join(File.dirname(
我需要测试一个从 url 加载图像的 AngularJs 服务。这是我的服务: /*global angular, Image*/ (function () { 'use strict'; f
随着数据库大小的增加,我有一个查询需要更长的时间来执行。查询已优化并且是必要的,但我的 C# 控制台应用程序最近给我这个错误: Unhandled Exception: MySql.Data.MySq
我正在研究 Linux shell 中的 timeout 命令。 当我尝试 timeout 1 bash 时,bash 将运行并在 1 秒后终止。 当我尝试 timeout 2 timeout 1 y
随着数据库大小的增加,我有一个查询需要更长的时间来执行。查询已优化并且是必要的,但我的 C# 控制台应用程序最近给我这个错误: Unhandled Exception: MySql.Data.MySq
我希望使用 Spring boot 和 Tomcat 扩展 Spring MVC 应用程序中的用户 session 。查看文档似乎有 2 个相关 properties : server.servlet
我正在尝试升级 Puppet 以使用 Ruby 1.9,但遇到了常量问题。 const_defined?("Timeout") 返回真,即使 :Timeout 不在常量列表中。这不会发生在 Ruby
首先,这是一个几乎重复的: How to differentiate when wait(long timeout) exit for notify or timeout? 但这是一个新的后续问题。
对于下面的代码,notifyAll() 会一直持有锁直到完成,即使超时了,这个 block 也不持有锁,必须等待notifyAll() block 完成。那么wait(timeout)中的timeou
Thread.Sleep(timeout) 和resetEvent.Wait(timeout) 都会导致执行暂停至少timeout 毫秒,那么它们之间有区别吗?我知道 Thread.Sleep 导致线
我是一名优秀的程序员,十分优秀!