问题

求 \(\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 的效率差异的更多相关文章

  1. [笔记]cin、cout与scanf、printf的效率差异对比分析

    之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...

  2. java-集合处理数据的效率差异

    先给结论,ArrayList数组结构的,插入和删除耗时长,get(index)耗时短. LinkedList是链表结构的,插入和删除耗时短,get(index)耗时长. 常用的几种集合,ArrayLi ...

  3. Java中AWT、Swing与SWT三大GUI技术的原理与效率差异

    Java中AWT.Swing与SWT三大GUI技术的原理与效率差异 转 https://blog.csdn.net/weixin_37703598/article/details/81843810   ...

  4. 疑难杂症——关于EntityFramework的SqlQuery方法的执行效率差异的探讨

    前言:最近项目上面遇到一个问题,在Code First模式里面使用EntityFramework的SqlQuery()方法查询非常慢,一条数据查询出来需要10秒以上的时间,可是将sql语句放在plsq ...

  5. Oracle Spatial分区应用研究之六:全局空间索引下按县分区与按省分区效率差异原因分析

    1.实验结论 全局空间索引下,不同分区粒度之所有效率会有不同,差异并不在于SDO_FILTER操作本身,而在于对于数据字典表的访问次数上: 分区越多.表上的lob column越多,对数据字典表的访问 ...

  6. 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 ...

  7. epoll和poll效率差异

    http://blog.163.com/sky20081816@126/blog/static/164761023201073033517435/ 百度“epoll和poll”

  8. JAVA中,字符串STRING与STRINGBUILDER的效率差异

    如果可变字符串操作较多的话,用STRINGBUILDER显然优势得多. public class HelloJava { public static void main(String[] args) ...

  9. FileInputStream 与 BufferedInputStream 效率对比

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3550158.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...

随机推荐

  1. python爬虫---爬取王者荣耀全部皮肤图片

    代码: import requests json_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win ...

  2. java中什么是内部类?它有什么用?如何使用?

    什么是内部类?马克-to-win:一句话:类中还有类.里边的叫内部类, 外边的叫外层类.有什么用?1)像文件夹一样,文件放文件夹里更清晰,内部类放外层类中, 清晰.主要从编程序的逻辑角度出发,有用.比 ...

  3. 微信小程序插件组件-Taro UI

    微信小程序组件使用以下官网查看 ↓  ↓  ↓ https://taro-ui.jd.com/#/docs/fab

  4. Blazor组件自做四 : 使用JS隔离封装signature_pad签名组件

    运行截图 演示地址 响应式演示 感谢szimek写的棒棒的signature_pad.js项目, 来源: https://github.com/szimek/signature_pad 正式开始 1. ...

  5. Android实现秒开效果

    0x01 创建SplashActivity 新建一个Activity,取名为SplashActivity 0x02 新建资源 在res/drawable下新建一个splash.xml文件和名为ig_s ...

  6. python---两个栈实现一个队列

    class Solution: """两个栈实现一个队列""" def __init__(self): # 接收栈 self.accept_ ...

  7. Linux小工具的应用,grep,sort,wc,cut

    小工具的使用: 1.管道(|):连接多个命令的工具,进程之间通讯的一种方式 用法:命令1 | 命令2 | 命令3....2.grep工具:行过滤,打印出的结果一行一行的 用法:grep options ...

  8. 一些有用的工具,iftop,iotop,htop,glances

    一些有用的工具: yum install glances -y资源监控工具GLANCESglances 可以为 Unix 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:CPU 使用率 ...

  9. 百兆以太网(100BASE-TX)的波形和眼图

    沾了公司的光用了那台采样率吓死人的示波器看了下百兆以太网的三电平波形和眼图. 之前我也强调过百兆的三电平是不能从1状态越过0状态跳到-1状态的,从眼图上能明显看出来. 可以看出这个信号还是不错的.甚至 ...

  10. 防抖-小程序-input输入频繁时搜索出bug

    html: <input type="text" class="input_search" placeholder="搜索周边店铺"  ...