直观比较 popcount 的效率差异
问题
求 \(\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 |
直观比较 popcount 的效率差异的更多相关文章
- [笔记]cin、cout与scanf、printf的效率差异对比分析
之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...
- java-集合处理数据的效率差异
先给结论,ArrayList数组结构的,插入和删除耗时长,get(index)耗时短. LinkedList是链表结构的,插入和删除耗时短,get(index)耗时长. 常用的几种集合,ArrayLi ...
- Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
Java中AWT.Swing与SWT三大GUI技术的原理与效率差异 转 https://blog.csdn.net/weixin_37703598/article/details/81843810 ...
- 疑难杂症——关于EntityFramework的SqlQuery方法的执行效率差异的探讨
前言:最近项目上面遇到一个问题,在Code First模式里面使用EntityFramework的SqlQuery()方法查询非常慢,一条数据查询出来需要10秒以上的时间,可是将sql语句放在plsq ...
- Oracle Spatial分区应用研究之六:全局空间索引下按县分区与按省分区效率差异原因分析
1.实验结论 全局空间索引下,不同分区粒度之所有效率会有不同,差异并不在于SDO_FILTER操作本身,而在于对于数据字典表的访问次数上: 分区越多.表上的lob column越多,对数据字典表的访问 ...
- Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
0.exists() 用法: select * from T1 where exists(select 1 from T2 where T1.a=T2.a) 其中 "select 1 fro ...
- epoll和poll效率差异
http://blog.163.com/sky20081816@126/blog/static/164761023201073033517435/ 百度“epoll和poll”
- JAVA中,字符串STRING与STRINGBUILDER的效率差异
如果可变字符串操作较多的话,用STRINGBUILDER显然优势得多. public class HelloJava { public static void main(String[] args) ...
- FileInputStream 与 BufferedInputStream 效率对比
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3550158.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...
随机推荐
- 一个好用的swagger第三方ui-xiaoymin
swagger自带的ui界面实在是看的难受 配置完默认访问地址:ip:port/swagger-ui.html 推荐一个好用的第三方ui,界面如图: 使用方法: 1.添加依赖 <dependen ...
- java中时间的规范是按美国,SimpleDateFormat怎么处理
题目3.2: 如果时间的规范是按美国,怎么处理? import java.text.ParseException;import java.text.SimpleDateFormat;import ja ...
- Python的组合数据类型
""" Python的组合类型: 序列类型:元素之间存在先后关系,可以通过索引来访问 列表: 元组: 字符串: 映射类型:用键值来表示数据 字典: 集合类型:元素是无序的 ...
- Vue整合Quill富文本编辑器
Quill介绍 Quill是一款开源的富文本编辑器,基于可扩展的架构设计,提供丰富的 API 进行定制.截止2021年1月,在github上面已有28.8k的star. Quill项目地址:https ...
- 检查是否安装ASM
ASM和管理 ASM是一个有效的抽象层,使Oracle数据库可以与叫做DiskGroups的抽象空间一起使用,而不是直接使用DataFiles. Oracle ASM脱离操作系统的文件系统约束,使得对 ...
- NodeJs学习日报day7——简单中间件
const express = require('express') const app = express() const mw = function(req, resp, next) { cons ...
- Dubbo-admin启动问题
在Github上down了Dubbo-admin的最新文件,使用cmd命令打包完成后启动出现了问题,输出找不到2181端口的error. 百度只查询到是Dubbo-admin配置中的Zookeeper ...
- vue 点击事件唤醒QQ
window.location.href = 'http://wpa.qq.com/msgrd?v=3&uin=QQ号' window.location.href = 'http://wpa. ...
- 微信小程序 因文件大小不能使用本地背景图片解决方法
因微信文件只允许2m,所以不能给图片太多空间.所以出现背景图片的坑 解决方案1: 把背景图片放到服务器文件件下,直接将路径给url. 得是https开头的路径才可以 解决方案2:将图片转换成base6 ...
- 继承 & super & 方法覆盖
简单继承 细节1: 细节2: 子类创建对象,先 父类构造器,后 子类的构造器,因为(默认的super) 细节3: 假设父类只有一个有参构造器, 此时需要子类用上super给定父类参数,才能通过编译 ...