我在程序中使用餘弦定律,它似乎是我的代碼的一個緩慢點。這是我的代碼行:VB.net中餘弦定律的優化
Ans = Math.Sqrt(A^2 + B^2 - 2 * A * B * Math.Cos(C - D))
其中A到D是雙變量,每次調用時都會改變。這個功能似乎需要大約2000個時鐘才能運行。我已經研究過使用小角度近似,即如果(C-D)足夠小,可以使用cos(C-D)= 1 - ((C-D)^ 2)/ 2。不幸的是,結果總體上比原始代碼慢。我研究過任何一種可用於簡化計算的關係,但A和C以複雜的方式相關,B和D以相同的方式相關,A和B之間或C和D之間沒有關係
我曾經想過爲(CD)的所有值使用查找函數,但我的準確性目前是至少6位有效數字,我寧願留在該級別,因爲這是我輸入數據的準確性,簡而言之,這意味着在查找過程中大約有一百萬個值,這只是該函數的一部分。我曾想過要查找所有四個值(A,B,C和D),但我不確定如何實現它。
我也已經多線程這個應用程序,並試圖使用GPGPU(由於花費在GPU和內存之間的時間,GPGPU最終變慢)。
所以,我的問題是如何加快這個功能。
感謝先進!
變量的類型是什麼?如果你使用decmal,你會看到一個緩慢的下降。 –