2

我有一个非常基本的问题,关于编译器(在我的情况下是 gcc)使用 -O 标志完成的优化。我想在这里只关注循环的矢量化。假设一个简单的 for 循环没有指针别名/竞争条件的危险。是否可以重写此循环,使编译器生成的带有 -O0 标志的代码与编译器对循环进行矢量化时一样快?

4

1 回答 1

3

很有可能:不。使用 -O0 可以让编译器全权委托使代码尽可能低效。当然,不是什么恶兽要惹你,但除非你告诉它,否则它不会努力。

一些优化通常必须由编译器完成。通常,您无法通过源代码中的微优化获得与使用激进的编译器优化所获得的相同的性能。

关于您的具体示例:是的,您可以在代码中包含向量指令以强制使用向量指令。但是,如果您执行此类操作,您的代码可能无法在所有平台上运行,除非您非常清楚自己在做什么并始终提供回退。

于 2013-11-04T17:37:29.050 回答