关于编译器(在我的例子中是gcc)使用-O标志所做的优化,我有一个非常基本的问题。我只想在这里集中讨论循环的向量化。假设一个简单的for-循环,不存在指针混叠/争用的危险。是否有可能重写此循环,使编译器生成的代码具有-O0标志,就像编译器将循环向量化时那样快?
发布于 2013-11-04 17:37:29
更有可能:不。通过使用-O0,编译器可以任意选择,从而使代码效率达到它想要的程度。当然,不是一些邪恶的畜生想惹你,但它不会努力,除非你告诉它。
一些优化通常必须由编译器来完成。通常,您不能通过源代码中的微优化获得与使用激进的编译器优化相同的性能。
关于您的具体示例:是的,您可以在代码中包含向量指令,以强制使用向量指令。但是,如果您做这样的事情,您的代码可能不会在所有平台上工作,除非您非常清楚自己在做什么,并且总是提供后遗症。
https://stackoverflow.com/questions/19773434
复制相似问题