【发布时间】:2011-06-04 13:11:30
【问题描述】:
我的问题是针对 iPhone、iPod 和 iPad 的,因为我假设架构会产生很大的不同。我希望某处有一个规范(可能适用于各种芯片),或者有一种可靠的方法来测量每个特定指令的 T。我知道我可以使用任意数量的工具来测量使用的总处理器时间、使用的内存等。我想在较低级别进行量化。
所以,我能够计算出我完成了算法的主要部分多少次。例如,我在一个简单的实现中迭代 n * (n-1) 次,在另一个实现中迭代 n(最佳情况)和 n + n * (n-1)(最坏情况)之间。我还可以对指令总数(+ - = % * / 和逻辑语句)进行合理计数,并且可以比较这些计数,但这是假设每个操作的权重相同。另外,我不知道如何加权逻辑语句(if、else、for、while)与数学运算符的实际时间值......每次我“如果”的工作量与“+”一样多用它?我很想知道在哪里可以找到这些信息。
因此,为了清楚起见,我的目标是发现我对 CPU(或 GPU 或任何 U)的处理器时间要求,以便我可以围绕处理器时间设计最佳算法。有人可以告诉我从哪里开始使用 iOS 硬件吗?
编辑:This link to ClockServices.c 和开发人员门户中的 SIMD 内容对于对此感兴趣的人来说可能是一个好的开始。今晚再喝几杯咖啡,我可能会熬过去;)
【问题讨论】:
-
我想要评估的大部分只是 C。我会很高兴。但是,如果知道遍历 NSArray 的成本会很好;但这听起来可能很复杂且多变。我只是不知道我能找到多少……我肯定会满足于基本的 C 操作;)
-
是的,我想到了(百万次测试),但这是一个很好的评论。我考虑过像你说的那样运行测试,但我对结果有两个担心。一是我的测试在某种程度上是幼稚的,当编译器决定做一些不同的事情时,我会做很多工作来获取那些不支持的信息。其次,我只有几个设备,有的有不同的芯片。所以我最大的希望是,也许有人有图表,可以准确估计特定处理器的 C 操作的时间价值。
-
从 NSArray 评论中笑了出来。我希望我的 NSArray 不会在我身上出现蓝屏或其他情况;)
标签: iphone algorithm ipad optimization instruction-set