瑣碎的解決辦法是:如何在C++中高效地實現無窮大和無窮大支持算術?
class Number
{
public:
bool isFinite();
bool isPositive();
double value();
...
private:
double value_;
bool isFinite_;
bool isPositive_;
...
};
令我擔心的事情是效率:
從有效的C++:55個具體辦法由Scott Meyers的提高您的程序和設計(第3版):
即使小對象具有廉價的拷貝構造函數,也可能存在性能問題。有些編譯器會以不同的方式處理內置和用戶定義的 類型,即使它們具有相同的基礎 表示形式。例如,一些編譯器拒絕將只包含一個雙精度值的對象 放入一個寄存器中,即使他們愉快地將放在那裏定期進行裸體加倍。當發生這種事情 發生時,通過引用 傳遞這樣的對象可能會更好,因爲編譯器肯定會將指針(實現 引用)放入寄存器中。
有沒有辦法繞過效率問題?例如一個使用匯編語言魔術的庫?
您是否試過在程序集中查看您的編譯器是否正在生成您提到的腦死代碼? – Mysticial
當你解決了性能問題後,我很好奇聽到你的算術運算在無窮大是操作數時會做什麼! – cheeken
我是C++的初學者,幾乎不瞭解彙編語言。這些東西超出了我目前的能力。我只是希望有一個衆所周知的解決方案。 –