2016-09-29 62 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功能更快。

如果您要檢查的性能,你不應該在一次調用這兩個函數只是調用一個循環一個功能,測量時間,然後其他的功能。