问题标签 [nanotime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1187 浏览

android - 如何在 Android 中接收 Audiorecord 的硬件时间戳?

我需要检索AudioRecord class读取缓冲区的时间戳。我需要以毫秒为单位跟踪时间。我尝试在读取缓冲区后添加时间戳检索,但是当我收到下一个缓冲区时,检索它所需的时间可能会波动很大。有没有办法从回调中接收录制音频的时间?

是我目前正在尝试的。

0 投票
2 回答
111 浏览

complexity-theory - nanoTime() 计时器的分辨率

我在帖子中搜索了与System.nanoTime()方法调用处理时间相关的答案。

考虑以下代码

如果你运行它,currentTime - lastTime 将评估为“0”。发生这种情况的唯一方法是,如果计算机在纳秒的分辨率之外处理第二个方法调用(即调用花费的时间不到一纳秒)。从逻辑上讲,这是有道理的,因为计算机(平均而言)可以在一纳秒内执行多个进程。

这个对吗?如果不是,我的逻辑哪里错了?

0 投票
2 回答
5300 浏览

c++ - C++ 中计时的纳秒精度

C ++中有没有办法获得纳秒精度?相当于 Java 中的纳秒计时器(System.nanotime)。

0 投票
1 回答
826 浏览

java - System.nanoTime() diff is 0

I have the following piece of code to try and determine how long a method call takes to execute:

When being executed on a specific Android device (Xperia P), this diff (finish - start) is 0 most of the time.

What is the reason for this? and is there any better way to try measuring the time this method takes to execute and return?

*Note that other Android devices behave differently

0 投票
4 回答
6055 浏览

java - Java System.nanoTime() 与 System.currentTimeMillis()。为什么它们有不同的输出?

给定以下 Java 代码:

它给出了一个输出

我期待两者之间有一点区别,但我错了。
你知道伙计们为什么会这样吗?

0 投票
2 回答
21407 浏览

java - 如何正确显示纳秒到秒的转换

我有一个 BFS 算法来解决 8-Puzzle,项目要求之一是输出找到最浅解决方案所需的时间。

System.nanoTime()用来跟踪应用程序的运行时间,因为它在一秒钟内解决了大多数给定的难题。

我遇到的问题是我转换我的nanoTime的秒数转换为秒时,它以一种奇怪的格式显示。

使用以下代码:

这将产生输出:

我也尝试过使用浮点数来表示值。

是否有人能够提供更好的转换/显示方式,也许使用格式输出语句?

感谢您花时间阅读我的问题。

0 投票
1 回答
724 浏览

vxworks - 测量定时器功能的持续时间

我有一个计时器函数(用于轮询),我想每 1uS 调用一次,但我也想确保有足够的时间让其他任务运行,所以我想测量执行此函数所需的时间。为此,我认为我可以clock_gettime()在函数的开始和结束时使用。现在我的问题是,返回的两次总是相同的,我只是不相信我的函数会在不到 1 纳秒的时间内完成——这不可能。CPU 的时钟频率为 800MHz。我的代码:

我究竟做错了什么?开始时间和停止时间总是一样的...

0 投票
2 回答
1153 浏览

java - 使用 Java nanoTime 进行多线程

我目前正在用 Java 编写一个多线程程序。在某些时候,不同的线程会记录他们的动作,我正在使用nanoTime它。每个线程都有自己的日志文件,最后我将它们合并并根据它们的时间(nanoTime)对它们进行排序以查看发生了什么。问题是我有与此类似的错误行为,其中x是一个volatile变量:

所以在我看来,这nanoTime并没有真正正确地计时。在nanoTime文档中是这样写的:

仅当在 Java 虚拟机的同一实例中获得的两个此类值之间的差异被计算时,此方法返回的值才有意义。

由同一进程创建的线程是否有可能在不同的 JVM 中执行?这可以解释错误行为,nanoTime但仍然没有太大意义。有任何想法吗?

0 投票
1 回答
140 浏览

java - 为什么结果不接近?(我只做一个试验)

我写了一个程序来计时某些平方根算法

我不想做 100/1000 次试验,因为我需要把这个程序放在科学展览板上,所以我不想通过使用基准测试等使程序复杂化。但是,当我这样做时,结果我变化很大。例如,一旦我得到

牛顿迭代:0.466200 毫秒(进行了 8 次迭代) 中点法:21.090700 毫秒(进行了 330 次迭代) 正割法:0.134500 毫秒(进行了 11 次迭代) Bhaskara-Brouncker 算法:1.315300 毫秒(进行了 132 次迭代)

另一次我得到牛顿迭代:0.550700 毫秒(进行了 8 次迭代)中点方法:23.168400 毫秒(进行了 330 次迭代)正割法:0.130400 毫秒(进行了 11 次迭代) Bhaskara-Brouncker 算法:1.078100 毫秒(进行了 132 次迭代)

现在我得到牛顿迭代:0.469500 毫秒(进行了 8 次迭代)中点方法:22.437700 毫秒(进行了 330 次迭代)正割法:0.189200 毫秒(进行了 11 次迭代) Bhaskara-Brouncker 算法:1.807600 毫秒(进行了 132 次迭代)

他们只是不是很接近。为什么会这样?我每次都在做同样的事情,而 java 不可能优化,因为我每次运行时只做一次。

那么最好的方法是什么?有几种可能的解决方案:

  • 只做一次试验

    • 优点:Java无法优化
    • 缺点:不是很一致(如上所示)
  • 做 1000 次试验

    • 优点:相当一致
    • 缺点:java会优化所以结果不准确
  • 进行 1000 次试验,但每次使用 rand 更改我们近似平方根的值

    • 优点:相当准确,无需优化
    • 缺点:由于随机性,每次答案都会有所不同
  • 做 969 次试验,但每次都做 2, 3, ..., 1000 的平方根(不包括 1,4,..,961)

    • 优点:相当准确,无需优化
    • 缺点:

我倾向于最后一个。这是一个好主意吗?

0 投票
2 回答
881 浏览

java - 查找纪元和当前时间之间的时间差

当使用 System.Time 获取其中一个时间值时,我需要找到两个时间值之间的差异。currentTimeMillis() 即它是the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC,另一个是使用 System.nanoTime() 获取的,这意味着它是current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds

我该怎么做呢?