编译器基准测试

2020-07-22 02:14:51

这将在生成的目录中生成代码,然后针对语言、操作类型和编译器的每种组合,运行支持的基准测试。最后,一个显示基准结果的Markdown格式表被打印到标准输出。

GCC和克朗并没有为C++执行所有的语义检查(因为它太昂贵了)。这与执行所有这些任务的D&39;s和Rust';编译器形成了鲜明对比。

LONG ADD_LONG_N0_H0(LONG X){RETURN x+0;}LONG ADD_LONG_N0(LONG X){RETURN x+ADD_LONG_N0_H0(X)+0;}LONG ADD_LONG_N1_H0(LONG X){RETURN x+2;}LONG ADD_LONG_N1_H0(X)+1;}LONG ADD_LONG_N2_H0(LONG X){RETURN x+2;}long add_long_n2(Long X){return x+add_long_n2_h0(X)+2;}int main(__ATTRIBUTE__((未使用))int ARGC,__ATTRIBUTE__((UNUSED))char*argv[]){LONG LONG_SUM=0;LONG_SUM+=ADD_LONG_N0(0);LONG_SUM+=ADD_LONG_N1(1);LONG_SUM+=ADD_LONG_N2(2);返回LONG。

对于支持泛型的每种语言,都会在LINEAR.$lang的旁边生成一个额外的模板化源文件LINEAR_t.$lang。$lang等同于LINEAR.$lang的内容。除此之外,所有函数(Main除外)都是模板化的。这个模板化的源代码也将进行基准测试。下表中模板化的列指示编译是否使用模板化函数。

D';的编译器DMD仍然遥遥领先于所有竞争对手,特别是在默认构建(标准编译)性能方面。

每一个新版本(目前在下表中分别是8、9、10),GCC和Cang的性能都会明显下降。

通用C++和D(DMD)版本的编译速度大约慢1.5到2倍,而有趣的是,通用Rust版本的处理速度比非通用版本快2-3倍。

Julia的JIT编译器(目前)非常需要内存。对于Julia,函数计数和函数深度的最大推荐乘积是5000。因此,当达到这一最大值时,朱莉娅将被排除在基准之外。

我的英特尔®酷睿™i7-4710HQ [email protected] GHz×8,16 GB内存运行Ubuntu20.04进行示例调用时的输出。

这是使用LDC构建的DMD,编译时间额外减少了15%。