在通过GCC编译器编译时,我已经研究了__restricting C ++代码中某些指针的效果。
它转变为不仅运行时间保持不变,而且可执行文件似乎没有改变,字节大小与之前完全相同。
我的GCC版本是
gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)
虽然它在解析时接受了这个C ++扩展,但在组装代码时它似乎并没有考虑到它。所以有一个原因,编译器不知道如何使用这个语义信息,或者处理这些信息是完全禁用的。
代码执行大量的数字运算,它希望将其启用以进行测试。你能帮忙吗?
答案 0 :(得分:7)
restrict
限定符基本上是用户帮助编译器执行某些与别名相关的优化的一种方式。只有在代码中已存在这些优化机会时,它们才会生效,因此在编译器以前必须使用“更安全”(非优化)代码生成的情况下,使用restrict
只会启用它们。在其他情况下,restrict
根本不起作用。
因此,您在代码中添加了一些restrict
限定符。但是它们中的任何一个是否在它们真正重要的环境中使用,即它们实际上为编译器提供了更多自由来优化代码?如果没有,你不应该期望你的代码改变。