直观比较 popcount 的效率差异
2024-10-19 21:25:00
问题
求 \(\sum\limits_{i=1}^{3\times 10^8} popcount(i)\) 。
仅考虑在暴力做法下的效率。
枚举位
__builtin_popcount
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main(){
n=3e8;
for(int i=1;i<=n;i++){
ans+=__builtin_popcount(i);
}
cout<<ans<<'\n';
}
-O2
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main(){
n=3e8;
for(int i=1;i<=n;i++){
ans+=__builtin_popcount(i);
}
cout<<ans<<'\n';
}
-O2,-popcnt
#pragma GCC optimize(2)
#pragma GCC target("popcnt")
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main(){
n=3e8;
for(int i=1;i<=n;i++){
ans+=__builtin_popcount(i);
}
cout<<ans<<'\n';
}
效率
方式 | 时间 1 | 时间 2 | 时间 3 | 平均值 |
---|---|---|---|---|
枚举位 | ||||
优化 | ||||
__builtin_popcount | 0.808s | 0.876s | 0.815s | 0.833s |
-O2 | 0.796s | 0.702s | 0.718s | 0.739s |
-O2, -popcnt | 0.173s | 0.175s | 0.172s | 0.173s |
最新文章
- HTML5滑动(swipe)事件
- .net程序员转行做手游开发经历(二)
- MyEclipse for linux 破解方法
- 关于精简安装office2010的步骤
- Python学习笔记(四)字符串型
- 你知道的display的值有多少?用了多少?
- Oracle数据库——常用命令(用户管理、数据库导入导出)
- 【Populating Next Right Pointers in Each Node II】cpp
- Android 近百个项目的源代码
- Case Study: Random Number Generation(翻译教材)
- G - Balanced Lineup - poj3264(区间查询)
- 网易云课堂_C语言程序设计进阶_期末考试编程题部分
- 学号:201521123116 《java程序设计》第三周学习总结
- Struts2配置问题终极解决方案
- js获取当前日期方法(YYYY-MM-DD格式)
- 码云,git使用 教程-便签
- 【分片无法挂载】Elasticsearch分片和副本无法挂载(分片移位)
- React Native 组件之TouchableHightLight
- 【10.14】Bug Bounty Write-up总结
- eclipse在Windows7 64 位下出现Unhandled event loop exception No more handles