2016-09-29 67 views
0

我想实现像My_AddModMy_SubModMy_MulMod一些数学函数,并把结果返回给vec_long & - 数据类型结果慢下来的代码,而无需使用NTL功能结果

当我打电话矿和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执行时间)和它们所产生的值相同,是什么造成了大量的等待时间或如何解决它的原因是什么?

回答

0

如果您使用例如-O3可能的情况是,如果不使用结果,编译器会删除函数的调用。

NTL的职能应高度优化,所以它是不可能的,你的功能比NTL功能更快。

如果您要检查的性能,你不应该在一次调用这两个函数只是调用一个循环一个功能,测量时间,然后其他的功能。