0

我正在尝试实现一些数学函数,如My_AddModMy_SubModMy_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

它工作得很好,但在代码中造成了很大的延迟。

打印出 and 的 value 和 data-type 时tmpt_NTLtmpt_My它​​们是相同的 value 和 data-type long

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

4

1 回答 1

0

如果您使用例如编译您的代码-O3,则编译器可能会在未使用结果的情况下删除您的函数的调用。

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

如果要检查性能,则不应同时调用这两个函数,而应循环调用一个函数并测量时间,然后测量另一个函数。

于 2017-02-10T15:34:59.663 回答