我试图实现一些数学函数,如 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_NTL
和tmpt_My
的值和数据类型时,它们的值和数据类型long
相同。
由于两个函数都被调用(因此它似乎与My_function执行时间无关)并且它们生成相同的值,导致大延迟的原因是什么,或者我该如何修复它?
答案 0 :(得分:0)
如果使用例如编译代码-O3
如果未使用结果,编译器可能会删除函数调用。
NTL的功能应该高度优化,因此你的功能不太可能比NTL功能更快。
如果你想检查性能,你不应该同时调用这两个函数,而只是在循环中调用一个函数并测量时间,然后测量另一个函数。