2013-12-16 44 views
1

Java中的三角函數優化性能增益優於標準方法的性能優勢?在這裏例如:Fast transcendent/trigonometric functions for Java我發現了一些方法和庫來執行類似的任務。Java中的三角函數優化性能增益

+0

如果你不明白它是如何工作的,那麼你就不太需要這些功能。內置的功能可能會更好地記錄和維護。 – Kent

+0

@Builder_K我想首先考慮性能增益,所以我知道是否值得深入討論這個話題。 – spectre

回答

1

它也依賴於JDK的實現,StrictMath中的函數是本地的。

其中一種方法是使用泰勒級數子集派生的函數。

我記得另一個有趣的函數計算方法。 假設你需要有3d旋轉和所有參數在有限整數子集(0..180)/ PI。 因此,您建立預先計算的值表,然後使用它。

double[]result=new double[180]; 
for(int i=0; i<180; i++) results[i]=Math.sin(i/Math.PI);//end of init 
double sin(int value){return result[i];} 
+0

好極了,但這並沒有回答這個問題:性能收益是多少? – spectre

+0

從哪種方法中獲益?您可以使用CPU sin - 從CPU直接單一調用獲得的性能增益,使用另一個近似值,較少算術運算的性能增益,使用預先計算的值,直接內存調用而不是計算的性能增益。 – chro

+0

詳細說明。我想你有這樣的實踐經驗,所以你可以發表你的觀察。 – spectre