我刚刚听说iphone不能原生地加倍,从而使它们比常规漂浮慢得多.
这是真的?证据?
我对这个问题很感兴趣,因为我的程序需要高精度计算,而且我必须在速度上妥协.
如果有许多浮点运算正在进行,Apple建议编译ARM而不是拇指.我的整个应用程序几乎是一个大的浮点操作.
以下是他们在iOS应用开发工作流程指南中所说的内容:
iOS设备支持两个指令集,ARM和Thumb.默认情况下,Xcode使用Thumb指令,因为使用Thumb通常会将代码大小相对于ARM减少约35%.如果使用ARM指令而不是Thumb,那么具有广泛浮点代码的应用程序可能会表现得更好.您可以为应用程序关闭Thumb,以便通过将Compile for Thumb build设置为No来编译ARM.
但是,我在构建设置中找不到任何"Compile for Thumb"设置.他们重命名了吗?或者Xcode 4现在不可用?
有人可以访问iPhone 3GS或Pandora,请测试我刚写的下面的汇编程序吗?
它应该在NEON矢量FPU上非常快速地计算正弦和余弦.我知道它编译得很好,但没有足够的硬件我就无法测试它.如果你可以计算一些正弦和余弦,并将结果与sinf()和cosf()的结果进行比较,那将会有所帮助.
谢谢!
#include <math.h>
/// Computes the sine and cosine of two angles
/// in: angles = Two angles, expressed in radians, in the [-PI,PI] range.
/// out: results = vector containing [sin(angles[0]),cos(angles[0]),sin(angles[1]),cos(angles[1])]
static inline void vsincos(const float angles[2], float results[4]) {
static const float constants[] = {
/* q1 */ 0, M_PI_2, 0, M_PI_2,
/* q2 */ M_PI, M_PI, M_PI, M_PI,
/* q3 */ 4.f/M_PI, 4.f/M_PI, 4.f/M_PI, 4.f/M_PI,
/* q4 */ -4.f/(M_PI*M_PI), -4.f/(M_PI*M_PI), -4.f/(M_PI*M_PI), -4.f/(M_PI*M_PI),
/* q5 …Run Code Online (Sandbox Code Playgroud) 在编译iPhone应用程序时,有一个"优化"架构(仅限armv7)与标准armv6/armv7架构的设置.
编译armv7架构有什么好处/后果?
我正在寻找一种方法来在运行时区分配备新ARM处理器的设备(如iPhone 3GS和一些iPod 3G)以及配备旧ARM处理器的设备.我知道我可以使用uname()来确定设备型号,但由于只有部分iPod接触3G的ARM处理器得到了提升,这还不够.
因此,我正在寻找其中一个:
提前致谢 :)
arm ×3
iphone ×3
neon ×2
armv6 ×1
armv7 ×1
assembly ×1
cocoa-touch ×1
ieee-754 ×1
ios ×1
iphone-3gs ×1
ipod-touch ×1
performance ×1
xcode ×1
xcode4 ×1