-5

Java、Groovy、および Scala の評価を完了しました。

私が考慮した要因は次のとおりです。読みやすさ、精度

知りたい要素: パフォーマンス、統合の容易さ

BigDecimal レベルの精度が必要でした。

ここに私の結果があります:

ジャワ

void someOp()
{
    BigDecimal del_theta_1 = toDec(6);
    BigDecimal del_theta_2 = toDec(2);
    BigDecimal del_theta_m = toDec(0);

    del_theta_m = abs(del_theta_1.subtract(del_theta_2))
      .divide(log(del_theta_1.divide(del_theta_2)));

}

グルーヴィー

void someOp()
{
 def del_theta_1 = 6.0
 def del_theta_2 = 2.0
 def del_theta_m = 0.0

 del_theta_m = Math.abs(del_theta_1 - del_theta_2) / Math.log(del_theta_1 / del_theta_2);
}

スカラ

def other(){
 var del_theta_1 = toDec(6);
 var del_theta_2 = toDec(2);
 var del_theta_m = toDec(0);
 del_theta_m = (
  abs(del_theta_1 - del_theta_2)  
  / log(del_theta_1 / del_theta_2)
 )
}

Java と Scala では静的インポートを使用したことに注意してください。

Java: 長所: Java
短所: 演算子のオーバーロードがない (多くのメソッド)、かろうじて読み取り/コード化可能

Groovy: 長所: デフォルトの BigDecimal は目に見えるタイピングがないことを意味し、すべての演算 (除算を含む) に対する BigDecimal のサポートは驚くほど少ない
短所: 別の言語を学ぶ必要がある

Scala: 長所: BigDecimal の演算子のオーバーロードがあります
短所: 除算による驚くべき動作 (Decimal128 で修正)、別の学習言語

4

2 に答える 2

4

BigDecimal のコアは各言語で同じです。パフォーマンスの制限要因が BigDecimal の数学演算である場合、これら 3 つの言語はすべて java.math.BigDecimal を使用するため、違いはありません。

したがって、読みやすく理解しやすい言語を使用してください (おそらく Java ではありません)。

于 2010-04-23T15:27:18.497 に答える
1

コードの主要なコアが大量の BigDecimal 演算である場合、Java は適切な言語 IMO ではありません。演算子のオーバーロードが必要です。

Java の将来のバージョンでは、組み込みの数値型に対するシステム定義の演算子のオーバーロードが可能になり、この種のユース ケースが使用可能になることを願っています。

これらの言語はすべて JVM で実行されるため、もちろん、適切な言語で高度な計算を実行し、その他すべてに Java を使用することができます。これにより、「別の言語を学ぶ」という側面が最小限に抑えられます。

于 2010-04-23T15:19:37.903 に答える