如何对VI进行基准测试测量代码运行时间

更新 May 31, 2026

适用于

软件

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

问题详述

  • 我想测量我的代码某一部分运行所需的时间。我应该使用哪些函数?
  • 我在 LabVIEW 中有一个使用 while 循环的程序,我想知道我的 while 循环需要多长时间才能迭代。 如何对我的循环进行基准测试?
  • 我正在获取不断变化的数据,但在数据变化和我在程序中看到更新之间存在延迟。如何判断我的循环是否导致了这种延迟?

解决方案

代码基准测试

在一段代码中测量已过时间,最好的方法是使用 一个 平铺式顺序结构 结合时间计数函数或 Express VI。由于平铺式顺序结构迫使代码按顺序运行,您可以使用时间分辨率来衡量 之前 以及 之后 您的代码运行。从时间测量 之后 减去时间测量 之前 以获取经过时间(delta t)。 

您应使用的计时器功能或 Express VI 取决于您的使用情况。

计数器计数(毫秒)

对于简单的代码测量,请使用 {b}Express VI{b} 计数器计数(毫秒)  功能。 

  • 如果您的代码按以下顺序运行,则这是一个良好的定时结构: 毫秒 甚至长达
  • 以下代码片段中被测量的代码是一个等待(毫秒)函数。用您自己的代码替换 “等待(毫秒)” 函数以进行基准测试
  • 以下代码片段将运行一次,并为您提供一个单次计时比较。如果您想运行代码多次以获得平均运行时间,可以使用 使用 LabVIEW 测量代码平均执行时间 示例代码,该代码会迭代代码并输出平均执行时间。

 

中文(简体): 

获取日期/时间(以秒为单位)

如果您的代码需要按月顺序运行,请使用 获取日期/时间(以秒为单位)  函数。同样,以下代码片段中被测量的代码是一个等待(毫秒)函数。用您自己的代码替换等待(毫秒)函数进行基准测试。
 


 

Tick Count Express VI(实时)

如果您正在对实时目标的代码进行基准测试,您可以使用 Tick Count Express VI 并将其配置为显示经过的滴答数,以便获得更精确的结果。

  • 请注意,您可以在 Windows 或其他非确定性操作系统上使用此函数,但其精度仅限于毫秒。
  • 同样,下面代码片段中被测量的代码是一个 Wait (ms) 函数。用您自己的代码替换 Wait (ms) 函数以进行基准测试

 


 

基准测试循环

您可以使用“计数器计数(毫秒)”来记录当前时间(以毫秒为单位),并将其从上一次迭代期间的时间中减去,从而基准测试在循环(或 for 循环)中迭代所需的时间。 


Benchmarking Loops.png
 


您可以编写一个替代版本,该版本使用反馈注释而不是移位寄存器。您只需将以下代码放入 while 循环中,即可获取迭代时间(毫秒),而无需修改原始代码。
 



注意: 上面的图像是小片段的 LabVIEW 代码,其中包括您可以在项目中重复使用的 LabVIEW 代码。要使用片段,请右键单击图像,将其保存到您的计算机,然后将文件拖到您的LabVIEW图表上。 

相关信息

  • 使用 获取日期/时间(以秒为单位)函数时,它将依赖于操作系统时钟。时间分辨率通常为一毫秒或更小,甚至可以与 CPU 时钟间隔一样小。计数器计数(毫秒)函数提供的精度也仅为 1 毫秒。如果您正在寻找更高的分辨率,则可以使用 高分辨率相对秒数,此 Express VI 的时间分辨率可能会因不同的操作系统和 CPU 类型而有所不同。
  • Tick Count (ms) Express VI 返回一个 32 位数字(0 到 40 亿),这意味着,使用上述方法测量经过时间时,Tick Count (ms) Express VI 在溢出之前可以连续运行大约 2 个月。当您重新启动计算机时,计数器会重置为零,因此偶尔重新启动计算机可以防止计数器(毫秒)Express VI 重置。
  • 获取日期/时间(秒)Express VI 返回自 1904 年以来已流逝的秒数。此 VI 不会翻转,直到大约 2050 年。
  • 如果您的 while 循环需要大量时间来执行每次迭代,您可能需要考虑使用多个 while 循环。实施 生产者/消费者架构 可以帮助减少在每个循环中迭代所需的时间,并防止数据丢失。