【问题标题】:Measuring running time of a function on iPad在 iPad 上测量函数的运行时间
【发布时间】:2012-08-15 01:36:00
【问题描述】:

我想知道在 iPad 上运行的某个功能所消耗的确切时间。 由于某种原因,我在运行应用程序时无法将 iPad 连接到 macbook(USB 被其他设备占用)。

我曾尝试使用clock(),像这样

clock_t start = clock();

/* Do something here */

double executionTime = (double)(clock()-start) / CLOCKS_PER_SEC;

我不知道为什么 executionTime 的值为 0。 开始时间和结束时间的差大约是 1,000,000,000(我自己计算)。但是我无法得到正确的 CLOCKS_PER_SEC(它每次都会改变),所以我不知道那个数字的含义。

我阅读了“iOS 设备上的 ctime 无法正确测量时间”的帖子,但它没有帮助。 有没有办法修复 CLOCKS_PER_SEC?或者还有其他方法可以测量时间。

谢谢

CLK_TCK 的值为 1,000,000。 整个程序在 5 秒内结束。

【问题讨论】:

  • “CLOCKS_PER_SEC 每次都变化”是什么意思。 CLOCKS_PER_SEC是“time.h”中定义的宏,怎么改?
  • 但是我直接输出CLOCKS_PER_SEC的值,确实变了……
  • NSLog(@"%d", CLOCKS_PER_SEC); 在我的 iPhone 和模拟器上显示 1000000 的恒定输出。
  • 我无法使用 NSLog,因为设备未连接。但是我通过打印“CLK_TCK”得到相同的值。
  • 您也可以稍后将您的 iPhone 连接到 Xcode 并在 Organizer 中查看 NSLog 输出。

标签: ios xcode ipad time ctime


【解决方案1】:

executionTime 是双精度,而不是整数。您必须使用%f 格式而不是%d 进行格式化。

【讨论】:

  • 我刚刚发现了那个愚蠢的错误......我使用旧方法仍然无法获得正确的时间。但是,组织者工作得很好!谢谢!
  • 很高兴能帮上忙。 - 如果你认为我已经回答了最初的问题,你可以考虑“接受”这个答案。
  • 哦!当然!对于那些仍然无法通过更改格式来解决问题的人。请检查 Martin R 的问题。
【解决方案2】:

查看 xcode 提供的分析实用程序。

这里有更多信息:

How to profile memory usage & performance with Instruments?

它非常强大,很棒:)

【讨论】:

  • 好像是测量内存使用情况?
  • 是的,但您应该可以设置执行时间。
  • 如果无法使用连接器电缆连接设备,会有什么帮助?
  • 是的,你需要电缆。抱歉,只是假设您拥有它,然后重新阅读:(您运气好吗?
  • 谢谢。没关系,至少现在我知道电缆可用时有一个很好的工具。在目前的情况下,USB 用于连接外部设备。事实上,我要测量的功能是在外部设备上运行的,这就是 USB 无法使用的原因......
猜你喜欢
  • 2021-12-28
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多