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

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

主要原因是我需要传递很多的模板,然而传递模板的时候又有很多事运行时候才能确定的,就用到了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

最后

以上就是微笑嚓茶最近收集整理的关于模板太多导致编译太慢,编译出的可执行文件太大?的全部内容,更多相关模板太多导致编译太慢,编译出内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部