问题标签 [time-measurement]

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 投票
2 回答
295 浏览

c++ - 测量相互依赖线程的并行计算时间

我有一个关于并行程序中的运行时测量的问题(我使用了 C++,但我认为这个问题更笼统)。

一些简短的解释:3个线程并行运行(pthread),以不同的方式解决相同的问题。每个线程可以将信息传递给另一个线程(例如,一个线程获得但另一个线程尚未获得的部分解决方案)以加速其他线程,这取决于他自己的状态/他自己计算中的可用信息。一旦第一个线程准备好,整个过程就会停止。现在我想要一个独特的时间测量来评估从开始到问题解决的运行时间。(最后,我想确定通过并行计算使用协同效应是否比单线程计算更快)。

在我看来,问题在于(由于操作系统暂停/取消暂停单个线程),在进程中传递信息的点在每个进程的状态中都不是确定性的。这意味着,在线程 1 上经过 xxx 单位的 cpu 时间后获得了某个信息,但无法控制线程 2 是在其计算所花费的 yyy 或 zzz 单位的 cpu 时间之后收到此信息。假设这个信息无论如何都会完成线程 2 的计算,线程 2 的运行时间是 yyy 或 zzz,这取决于操作系统的操作。

我可以做些什么来获得运行时比较的确定性行为?我可以命令操作系统“不受干扰”地运行每个线程(在多核机器上)吗?有什么我可以在实现(c++)的基础上做的吗?

或者是否有其他概念用于评估此类实现的运行时间(时间增益)?

最好的问候马丁

0 投票
3 回答
156 浏览

java - 代码优化;测量代码段之间的时间

我想看看在我的 android 应用程序中执行某个方法需要多长时间。我的第一个想法是做这样的事情:

但是对于初学者来说,日期对象似乎没有.getMilliseconds(),这就是我所追求的。有没有更简单和/或更好的方法来解决这个问题?

谢谢

0 投票
1 回答
206 浏览

java - 关于多线程系统中信息收集和时间测量的建议

我发现自己陷入了一个非常规的问题。我将用 Java 编写一个组件,该组件将从多线程系统中收集一些信息。我将不胜感激任何可以帮助我进步的信息或建议。以下是一些细节:

-system 包含许多相互交换信息的子系统(例如,一个组件可以运行另一个组件来进行一些记录或计算数据)

- 在系统上执行的每个操作更像是一个命令链,并导致连续运行几个组件,

-系统收到大量请求并且操作没有ID,因此很难跟踪哪个操作属于哪个链(我需要获取链的每个步骤的操作时间)

我必须处理的问题: - 操作中缺少 ID - 最终在子系统之间交换 ID - 代码更改最少(它是一个巨大的系统) - 最终找到解决此类问题的现有开源解决方案(或至少一些一部分)

这是我的组件从单个操作中获得的示例结果:

搜索 nr 60

Component1 45s Component6 2s Component4 32s Component2 4s

其中 45、2、32、4 代表在每个组件中花费的时间

如果有人发现自己解决了类似的问题或在日志记录/信息收集领域有经验,您的建议可以极大地帮助我。

编辑:我在 AspectJ 中创建了组件,它可以测量“围绕”每个方法的时间并将每个子系统的结果收集在一起。主要问题是我无法识别哪个日志属于哪个请求(例如特定的“搜索号 60”或“添加号 5”请求)。所以问题是:是否有任何有效的方法来创建可以通过控制流传输(以及如何传输)而不需要大量源代码更改的请求 ID?

0 投票
1 回答
3683 浏览

android - System.currentTimeMillis() 返回 0(零)

我目前正在尝试为Android制作一个小游戏。
我尝试测量游戏的两个动作之间的时间,但是当我在调用该currentTimeMillis()方法后尝试调用该方法时,开始时间保持为 0 gameThread.run()(gameThread 是可运行的)。当我在run()通话之前放置它时,它会提供正确的价值。

类游戏视图:

类 GameThread(实现可运行)

编辑:我试图在起点记录 currentMillis() 的返回值,似乎该方法在 run() 方法完成后被调用。它不应该同步运行吗?

日志:

解决方案:我错误地启动了 Runnable。这是启动 Runnable 的正确方法:

0 投票
2 回答
4125 浏览

linux - ARM 性能计数器与 linux clock_gettime

我在开发板 (ZC702) 上使用 Zynq 芯片,它有一个 667MHz 的双 cortex-A9 MPCore,并带有一个 Linux 内核 3.3 我想比较一个程序的执行时间,所以首先使用 clock_gettime 然后使用由 ARM 的协处理器提供的计数器。计数器每一个处理器周期递增一次。(基于这个stackoverflow的问题这个

我用 -O0 标志编译程序(因为我不希望完成任何重新排序或优化)

我用性能计数器测量的时间是 583833498(周期)/666.666687 MHz = 875750.221(微秒)

使用 clock_gettime() ( REALTIME 或 MONOTONIC 或 MONOTONIC_RAW )时,测量的时间为: 731627.126(微秒),少了150000微秒。

谁能解释我为什么会这样?为什么有区别?处理器没有时钟缩放,如何通过 clock_gettime 获得更少的执行时间?我在下面有一个示例代码:


0 投票
2 回答
160 浏览

language-agnostic - 如何以可靠的方式测量执行一段代码所花费的时间?

关于如何测量执行时间的问题已经在 SO 上被问过很多次了,例如看这里这里。然而,这些问题主要集中在使用哪些计时功能。

我感兴趣的是如何使结果可重现。例如,由于多任务处理,测试代码的执行可能会被影响结果的某些后台进程中断。为了克服这个问题,我已经看到一些基准测试进行了多次运行并花费了最好的时间(除了在循环中多次运行代码之外)。

关于如何使结果更可靠和可重复,还有其他建议或想法吗?

0 投票
1 回答
1756 浏览

arm - ARM Cortex-A8 处理器中的程序执行时间

我正在使用 ARM Cortex-A8 并尝试通过汇编代码从 CCNT 时间计数器中​​读取值。我正在关注这篇文章如何测量 ARM Cortex-A8 处理器中的程序执行时间? . 根据它,在我可以从定时器读取值之前,我必须启用计数器,启用 64 位分频器并清除溢出。这些操作是通过写入适当的寄存器(例如,PMCR(性能单硝基控制寄存器))来执行的。因此,我在循环中打印计数器值以跟踪溢出是如何发生的,并且我有这种行为:

因此,我有一组问题:

a) Linux 内核使用了哪些或上述寄存器?(更多内核版本的信息有多可靠)。改变他们的价值观有多安全?

b) CCNT 频率的准确值是多少,如何获得?不幸的是,我在处理器规格中找不到价值。但是,dmesg 说

但是根据clock_gettime手动识别它给了我7 MHz。那么,为什么它不是预期的 24 MHz?

c)根据我的第一个输出,为什么在溢出后它不是从零开始,而是从大约 1 百万开始?

d) 为什么没有 64 分频器我会得到错误的结果?值开始以这种方式跳跃:

我会很感激任何帮助。谢谢

0 投票
2 回答
1960 浏览

php - 如何测量 PHP 文档的下载速度和大小

这是我的计划:我的网页是一个简单的文件共享系统。我想为用户显示下载速度。这不是100%,但它相对较好。我想写下下载的时间......例如:你的下载速度是300kb / s,你可以在7秒内下载这个文件..


我有 2 个 PHP 文件。

阿尔法文件这样做:

这很简单。我从 speedtest.php 中只得到一个数字我的问题是:我有一个变量:(int)$size = 1; 我想做他的:$time_left = $size / $sebesseg; $sebesseg指速度。以字节为单位的下载速度。但是我不能使用 settype 或(int)$sebesseg.. 或任何我已经知道的东西,因为它给我写了一个空变量.. :-( 我该如何解决这个问题?

0 投票
1 回答
2706 浏览

c - Measure C code execution time (Linux)

I want to measure the execution time of a c-code segment using Linux. I take one timestamps at the beginning of the code segment and one at the end. But I don't know how to protect the code against IRQs and context switches to high prior tasks. The program runs in user space! The code segment is short so don't panic hosing the system.

Does anyone know an easy solution for this kind of protection?

0 投票
1 回答
395 浏览

performance-testing - MonkeyTalk:屏幕加载时间、完成时间/反应时间测量?

是否可以使用 MonkeyTalk 进行延迟测量,例如屏幕加载时间、完成时间/反应时间/任何操作的响应时间(例如打开 URL、点击按钮、删除消息、导航到下一个屏幕)?

如果无法使用 MonkeyTalk 完成,是否还有其他开源工具可以在这方面有所帮助?

您的帮助将不胜感激。谢谢。