基本上,我做了數以百萬計的非常簡單的計算,並試圖存儲最後打印的最高結果。我使用的是C#控制檯應用程序,但是這是很簡單的很語言無關尋找數百萬計算最大結果的最有效方法是什麼?
我有什麼(這會以另一種語言表現基本比較好?):
double output = 0;
//do the calculations
//after each:
if(calculationResult > output) output = calculationResult;
//done with calculations
Console.WriteLine(output);
這工作,但需要很長時間才能完成。我考慮將答案存儲在列表中並在計算後對其進行排序,但它以9GB左右的OutOfMemory崩潰。
比較直播和只存儲一個需要很長時間,但存儲所有內容並稍後進行比較需要太多內存。有什麼辦法可以優化嗎?
編輯:我的解決方案是先到達由答案形成的拋物線的頂點後移動一半的計算數。然後我意識到最好的解決方案是重構所有的東西以遞歸,從低精度和寬範圍開始,然後在提高精度的同時縮小範圍。使用英特爾IPP移植到C++僅提供了約8%的完成時間減少,而操作的減少約爲99%。我現在正在處理遞歸,並將回報。
除了優化計算之外,還可以顯示進度(使用進度條,以當地最大值),並在達到絕對最大值時停止。 –