在网上看到一篇C++模板元编程的文章,里面提到可以用来做循环展开,文章地址如下:
https://www.2cto.com/kf/20120...
然后在VS2015里测了一下,测试代码如下:


template <int dim>
int get_sum(int* a) {return a[0] + get_sum<dim - 1>(a + 1);
}template <>
int get_sum<1>(int* a) {return a[0];
}int main() {default_random_engine e;const int n = 1000;int vecs[n];for (int &v : vecs) {v = e() % 1000;}auto t1 = chrono::high_resolution_clock::now();int s1 = 0;for (int v : vecs) {s1 += v;}auto t2 = chrono::high_resolution_clock::now();//int s2 = Sum<n, int>::result(vecs);int s2 = get_sum<n>(vecs);auto t3 = chrono::high_resolution_clock::now();auto d1 = chrono::duration_cast<chrono::microseconds>(t2 - t1);auto d2 = chrono::duration_cast<chrono::microseconds>(t3 - t2);printf("%d, %d\n", s1, s2);printf("%lld, %lld\n", d1.count(), d2.count());return 0;
}

代码也挺简单的,定义一个模板函数来做循环展开。然后比较循环加和展开后加的时间。
选择64位,开启O2选项,不展开用时1微秒,展开用时59微秒。
可见做这个展开意义不是特别大。而且当长度变大之后,编译器处理不了,展开会直接报编译错误。

C++用模板元编程进行循环展开的性能测试相关推荐

  1. C++ 模板元编程简介

    文章目录 1.概述 2.模板元编程的作用 3.模板元编程的组成要素 4.模板元编程的控制逻辑 4.1 if 判断 4.2 循环展开 4.3 switch/case 分支 5.特性.策略与标签 6.小结 ...

  2. C++高阶必会操作--模板元编程

    泛型编程大家应该都很熟悉了,主要就是利用模板实现"安全的宏",而模板元编程区别于我们所知道的泛型编程,它是一种较为复杂的模板,属于C++的高阶操作了,它最主要的优点就在于把计算过程 ...

  3. 最好的 C++ 模板元编程干货!

    链接 | https://www.cnblogs.com/liangliangh/p/4219879.html 所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能 ...

  4. 模板元编程实现素数判定

    模板元编程(英语:Template metaprogramming:缩写:TMP)是一种元编程技术,不夸张的说,这项技术开启了一种新的C++编程方式.编译器使用模板产生暂时性的源码,然后再和剩下的源码 ...

  5. 编程实现算术表达式求值_用魔法打败魔法:C++模板元编程实现的scheme元循环求值器...

    本文使用 Zhihu On VSCode 创作并发布 [TOC] 前言 寒假时沉迷C++模板元编程,写了个简单的Scheme元循环求值器.可以用类似Scheme的语法写出这样的C++模板代码: _&l ...

  6. C++模板元编程 入门简介

    最近一直在看STL和Boost,源码里边好多涉及到模板元编程技术,简单了解一下,备忘(Boost Python中的涉及模板元的部分重点关注一下). 范例引入 // 主模板 template<in ...

  7. xpath里面if判断一个值不为空_现代C++之模板元编程(今天写个If与While)

    现代C++之模板元编程(今天写个If与While) 0.导语 今天就放轻松,有可能代码写的看的很晦涩,自己多敲几遍即可,下面来进入正文,如何使用模板元编程实现IF与WHILE. 1.IF实现 我们想要 ...

  8. 现代C++模板元编程基础

    元函数的基础介绍 C++的模板元编程是函数式编程,所以函数是一等公民.一切在编译期间执行的函数都可以称为元函数.元函数有struct和constexpr两种定义方式,前者是一直使用的,后者是C++11 ...

  9. 跟我学c++高级篇——模板元编程之十一鸭子类型

    一.鸭子类型 鸭子类型不是从c++中出现的,duck typing这种称呼在Python中比较多见.那么什么是鸭子类型呢?它是动态类型的一种风格,只要是对象的特征(其方法和属性集)和某个类型一致,就认 ...

最新文章

  1. 除了百度,国内还有哪些无人驾驶公司?
  2. springBoot(19):定时任务
  3. ue4 rpc php,UE4 RPC在C++中的使用简例
  4. C++ 反转单向链表
  5. python 终端打印表格--------pylsy 源码
  6. 用Socket编写TCP程序(C/C++)(转)
  7. 关于win10更新后谷歌浏览器打开卡慢或者无法上网的问题解决
  8. 华三服务器怎么设置系统启动模式,H3C 开局设置
  9. leetCode #26 Remove Duplicates from Sorted Array
  10. shiro学习(20): 自定义过滤规则
  11. 100c之23:两个平方数
  12. 熊猫烧香病毒(jusodl.exe severe.exe conime.exe)及其变种病毒专杀
  13. 翻译一定要知道的一些软件和工具
  14. 中职计算机ps教案ppt,photoshop课件ppt
  15. 复利思维,静待时间的玫瑰慢慢绽放
  16. 推荐一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件 —— 定时执行专家
  17. 零基础最详细html和css
  18. Linux下的网络配置
  19. 使用Jna调用dll函数库(java使用jna对接硬件接口)
  20. Spring Security oAuth2创建认证服务器模块

热门文章

  1. Cordova学习--iOS自定义插件
  2. 数据库的日常管理经验浅谈
  3. Linux学习—vim大全
  4. [Offer收割]编程练习赛15 A.偶像的条件[贪心]
  5. StringFormat
  6. 淘宝商品库MySQL优化实践的学习
  7. JSP页面取当前日期 oracle导入导出 branch与tag
  8. dns服务器正则表达式验证,js如何对域名和ip进行校验?(正则表达式)
  9. CORS 跨域-同源
  10. 异常处理-RestFul的异常处理