1

我的问题是针对 iPhone、iPod 和 iPad 的,因为我假设架构会产生很大的不同。我希望某处有一个规范(可能针对各种芯片),或者有一种可靠的方法来测量每个特定指令的 T。我知道我可以使用任意数量的工具来测量使用的总处理器时间、使用的内存等。我想在较低级别进行量化。

所以,我能够弄清楚我经历了多少次算法的主要部分。例如,我n * (n-1)在一个简单的实现中迭代时间,在另一个实现中迭代n(最佳情况)和n + n * (n-1)(最坏情况)之间。我还可以对指令总数(+ - = % * / 和逻辑语句)进行合理的计数,并且可以比较这些计数,但这是假设每个操作的权重相同。另外,我不知道如何权衡逻辑语句(if、else、for、while)与数学运算符的实际时间值......每次我“如果”的工作量与“+”一样多用它?我很想知道在哪里可以找到这些信息。

因此,为了清楚起见,我的目标是发现我对 CPU(或 GPU 或任何 U)的处理器时间要求,以便我可以围绕处理器时间设计最佳算法。有人可以告诉我从哪里开始使用 iOS 硬件吗?

编辑:此链接到开发人员门户中的 ClockServices.c和 SIMD 内容对于对此感兴趣的人来说可能是一个好的开始。今晚再喝几杯咖啡,我可能会熬过去;)

4

2 回答 2

2

在现代平台上,处理器时间并不是唯一的限制因素。通常,内存访问是。

尽管如此,处理器时间:
不过, 您估计处理器负载的基本方法是可以的,并且是明智的:根据您对典型平台的了解,粗略估计成本。

在本文中,表 1 显示了 .NET 中典型原始操作的时间。虽然您的平台可能会有所不同,但相对时间通常非常相似。也许您可以为 iStuff 找到 - 甚至制作 - 一个。

(除了处理器/指令集手册外,我还没有遇到过对其他平台如此彻底的,但它们处理汇编指令)

内存局部性:
缓存未命中可能会花费您数百个周期,磁盘访问会花费您上千倍的成本。因此,控制内存访问模式(即减少工作集、重组和以缓存友好的方式访问数据)是评估算法的重要部分。

于 2011-01-06T11:17:56.180 回答
0

xCode 具有测量每个功能/操作性能的工具,您可以简单地使用它们。

于 2011-01-06T10:28:12.910 回答