c++ - 有没有办法在mac上启用本地clang ++的优化?
问题描述
这个问题来自那个帖子。
似乎在线编译器在优化时丢弃了这个功能。
void functiona()
{
long long number = 0;
// long long problemSize = 100000000000;
long long problemSize = 10;
for( long long i = 0; i < problemSize; ++i )
{
for(long long j = 0; j < problemSize; j++)
{
for(long long k = 0; k < problemSize; k++)
{
for(long long l = 0; l < problemSize; l++)
{
for(long long l = 0; l < problemSize; l++)
{
number++;
number--;
}
}
}
}
}
}
在我的本地 Mac 上编译这段代码
clang++ -std=c++11 -stdlib=libc++ benchmark.cpp
./a.out
409
似乎没有优化。
有没有办法为clang++启用优化,使本地输出接近在线输出。
解决方案
clang++
采用与 基本相同的开关clang
,您自己找到的链接中完全涵盖了这些开关。最明显的优化是-Ofast
,但考虑到这种优化是多么简单和明显,基本上任何级别的优化都可能触发它,-O3
, -02
, -Os
, 甚至-O1
。确切的行为因编译器版本而异,因此您可以尝试确定消除版本循环所需的最低级别。
推荐阅读
- android - 应用程序可以从锁定屏幕读取信息吗?
- snowflake-cloud-data-platform - 在雪花中将仓库的大小从 x-small 调整为 medium
- python - Pandas - 基于解析其他日期列添加新日期列
- json - 如何将数据集从数据库查询转换为特定的 JSON 格式以输入到 REST api
- javascript - 使用嵌套循环计算重复项的数量。如何避免比较具有相同索引的两个字符
- java - Spring Boot 应用程序的嵌入式 HTTP 服务器在哪里?
- django - 如何在annotate django中获得布尔结果?
- javascript - 如何从 mongodb 查询回调函数返回数据?
- java - for循环内for循环代码优化
- android - 我可以在物理 android 设备 5.1 棒棒糖上运行我的颤振应用程序吗