Xcode中的objective-c编译器是否知道更好,或者如果我使用2的乘方和乘除法进行位移,速度会更快吗?Xcode的objective-c编译器是否针对位移进行了优化?
NSInteger parentIndex = index >> 1; // integer division by 2
Xcode中的objective-c编译器是否知道更好,或者如果我使用2的乘方和乘除法进行位移,速度会更快吗?Xcode的objective-c编译器是否针对位移进行了优化?
NSInteger parentIndex = index >> 1; // integer division by 2
这难道不是1980年代的吗?目前处理器是否在同一时间运行这些指令?我记得在我的68000天里,当一个div是100+周期,并且只有3或4个转变时......当处理器继续前进时,不确定情况如何。
为什么不让编译器生成汇编程序文件,并查看它生成的内容并运行一些基准测试。
我在网上发现了这个可能对你有帮助的事......虽然它是'C',但我认为大部分选项都是一样的。
Q: How can I peek at the assembly code generated by GCC? Q: How can I create a file where I can see the C code and its assembly translation together?
答:使用-S(注:资本S)切换到GCC,它会发出汇编代码到一个文件具有.S扩展。例如,下面的命令:
GCC -O2 -S -c foo.c的
将离开生成的汇编代码上的文件foo.s.
如果要与它被转换到组装在一起看到C代码,使用命令行是这样的:
GCC -c -g -Wa,-a,-ad [其他GCC选项] foo.c> foo.lst
它将输出组合的C /程序集列表到文件foo.lst。
如果您需要同时获取汇编代码和编译/链接程序,您可以将-save-temps选项指定给GCC(这会将包含.s文件的所有临时文件保留在当前目录中),或者使用-Wa,aln = foo.s选项指示汇编程序将C代码(连同十六进制机器代码和一些其他信息)的汇编转换输出到以=命名的文件中。
我实际上可以从上下文菜单中生成汇编代码。我不知道我在看什么,但似乎在这两种情况下都存在(算术右移)。如果我除以3,在asr之前有一条smul指令。 – Morrowless 2010-06-25 11:47:15
doen't那么回答你的问题,然后....如果你这几百万次调用这两个不同的代码,那么你可以肯定地看到。听起来就像它优化了我。 – AnthonyLambert 2010-06-25 16:49:15