概述
最近遇到一个问题就是:模板太多导致编译太慢,编译出的可执行文件太大
主要原因是我需要传递很多的模板,然而传递模板的时候又有很多事运行时候才能确定的,就用到了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
最后
以上就是微笑嚓茶为你收集整理的模板太多导致编译太慢,编译出的可执行文件太大?的全部内容,希望文章能够帮你解决模板太多导致编译太慢,编译出的可执行文件太大?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复