被修改傳遞:請注意,當我提到的性能比較,它不是C的性能比較++傳遞通過引用對通過噪聲值。當CPLEX對象按值傳遞或通過引用傳遞時,測試CPLEX的基礎算法(用於解決線性程序)是否運行更好。的功能相同的不同在參數類型 - 通過值/參考
您好所有:
我需要時,函數的參數是按值(PBV),當同樣的函數的參數通過引用(PBR)通過傳遞給測試程序的性能。我正在使用一個庫(IBM ILOG CPLEX,用於與Operations Research/Linear Programming相關的工作),該庫中的類對象可以是PBV和PBR,根據庫的手冊,不幸的是,其他。我只想測試一個選擇是否會導致性能問題。
蠻力的方式來測試這可能是有兩個源代碼文件,source_pbv.cpp和source_pbr.cpp,其中前者具有所有功能PBV和後者具有所有功能PBR。這很難保持。我想知道,如果可以的話,我可以使用一個.cpp文件來測試性能。
例如,在頭文件,可我定義類似
#define PBV 0 //0 value here indicates I want to PBR, 1 value here indicates I want to PBV
一旦被定義,有點像在函數聲明部分下列有效?
#if PBV == 0 // I want to PBR
function_to_call(Class1& class1object);//PBR function declaration
#elif PBV == 1 // I want to PBV
function_to_call(Class1 class1object);//PBV function declaration
#endif
然後,在源代碼中,我可以簡單地具有
function_to_call(class1object);
和此呼叫是否轉化爲PBV或PBR將取決於#定義PBV我在標題部分。
如果這不是正確的道路要走,任何指向正確的方向將高度讚賞。
而且,如果這種方式是體面的,我豈不要指定在我的代碼的身體下面:
function_to_call(Class1& class1object){//Actual function details for PBR
//Stuff
}
和
function_to_call(Class1 class1object){//Actual function details for PBV
//Stuff
}
與正在重複兩次//東西?有沒有辦法可以避免這種情況?
謝謝。
您不必對引用進行空檢查。 – DumbCoder 2010-11-08 12:53:47
它應該可以正常工作。你試過了嗎?告訴我們是否有任何問題。 – 2010-11-08 12:53:53
[這裏](http://stackoverflow.com/questions/2139224/how-to-pass-objects-to-functions-in-c)是一些可能會幫助你決定的指針。 – 2010-11-08 12:55:12