不使用NTL函数结果减慢代码

时间:2016-09-29 09:33:34

标签: c++ ntl

我试图实现一些数学函数,如 My_AddMod My_SubMod My_MulMod ,然后将结果返回给 vec_long& - 输入数据结果

当我调用我的函数和我的NTL并使用NTL的结果时:

long tmpt_My  = My_AddMod(long a, long b, long n);     //(a+b)%n
long tmpt_NTL =    AddMod(long a, long b, long n);     //function from NTL
vec_long& result[i] = tmpt_NTL;                   //choosing result from NTL_function

但是,如果我使用My_function的结果:

,它运行良好且快速
long tmpt_My  = My_AddMod(long a, long b, long n);     //(a+b)%n
long tmpt_NTL =    AddMod(long a, long b, long n);     //function from NTL
vec_long& result[i] = tmpt_My;                   //choosing result from My_function

它也运行良好但在代码中造成了很大的延迟。

打印出tmpt_NTLtmpt_My的值和数据类型时,它们的值和数据类型long相同。

由于两个函数都被调用(因此它似乎与My_function执行时间无关)并且它们生成相同的值,导致大延迟的原因是什么,或者我该如何修复它?

1 个答案:

答案 0 :(得分:0)

如果使用例如编译代码-O3如果未使用结果,编译器可能会删除函数调用。

NTL的功能应该高度优化,因此你的功能不太可能比NTL功能更快。

如果你想检查性能,你不应该同时调用这两个函数,而只是在循环中调用一个函数并测量时间,然后测量另一个函数。