我是靠谱客的博主 微笑嚓茶,最近开发中收集的这篇文章主要介绍模板太多导致编译太慢,编译出的可执行文件太大?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近遇到一个问题就是:模板太多导致编译太慢,编译出的可执行文件太大

主要原因是我需要传递很多的模板,然而传递模板的时候又有很多事运行时候才能确定的,就用到了switch,通过case实例化的方式进行模板参数定义:

如下:

template<typename T, int LOOP >
void f(const T* a, T* b; int num) {
for(int j = 0; j < num; j++) {

#pragma unroll
  for(int i = 0; i < LOOP; ++i) {
    a[j * LOOP + i] = b[j * LOOP + i];
  }

 }

}


switch(loop_num) {
  case 1:
    f<T, 1>(a, b;num);
    break;
  case 2:
    f<T, 2>(a, b;num);
    break
  default:
    break;
}

因为我有很多的这种模板参数,所以就导致函数层级特别高,一层套一层,因为switch case实例化的太多了 也导致最后一个函数被调用的时候产生了很多实例化,特别是有多层switch的时候,更是翻倍增长。解决办法:1.减少switch case, 2,减少不必要的模板参数 3,减少模板参数调用层级

还可以参考如下链接:https://www.cnblogs.com/blueoverflow/p/4790953.html

最后

以上就是微笑嚓茶为你收集整理的模板太多导致编译太慢,编译出的可执行文件太大?的全部内容,希望文章能够帮你解决模板太多导致编译太慢,编译出的可执行文件太大?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部