[解決済み] パフォーマンスとJavaのインターオペラビリティについて。ClojureとScalaの比較
質問
私はすでにClojureとScalaの様々な説明を読み、両方がそれぞれの場所を持っていることを理解しました。 ClojureとScalaの両方を比較するとき、私が完全な説明を得ていないいくつかの考慮事項があります。
1.) 2つの言語のうち、どちらが一般的に より速く ? これは言語機能によって異なることは承知していますが、性能の一般的な評価があれば助かります。 例えば Pythonの辞書が本当に速いことは知っています。 しかし、全体として、それは 多く よりも遅い言語です。 Clojureで行って、この先この問題に遭遇するのは避けたいですね。
2.) Javaとの相互運用性はどうですか? 私がこれまでに読んだのは、Scalaがネイティブのコレクション型を持っていて、大規模なJavaコードベースと統合するのが少し不器用であるのに対し、ClojureはJavaクラスと相互運用するために単純なIterable/Iterator中心の方法に従っているということだけです。 このことに関して何かもっと考え/詳細がありますか?
最終的に、もしclojureとscalaの間で十分に近い引き分けであれば、私は両方を試してみるかもしれません。 Clojureについて1つ言えることは、言語がまるで とても シンプルに見えます。 しかし、また、Scalaは非常に柔軟な型システムを持っています。 しかし、私はScalaが速いことを知っています(複数の個人的なアカウントに基づく)。 だから、もしClojureが著しく遅いのであれば:私は早く知りたいです。
どのように解決するのですか?
どちらの言語でも十分な速度が得られると思います。PythonとJavaを比較した場合、速度の差を言語のせいにするのは少し無理があるように思います。JavaはJITでコンパイルされるのに対し(モバイル端末を除く*)、Pythonはインタプリタです。どちらもバイトコードを使っているからと言って、その実装のパフォーマンスが比較にならないほど高くなるわけではありません。しかし、ScalaとClojureはどちらもJVM言語なので、同様のパフォーマンスを発揮するはずです。
ScalaはClojureに対していくつかの実装上の利点があり、多少高いパフォーマンスを期待できます。Scalaの静的型付けは、通常、Clojureのダック型付けよりも速度面で有利ですが、Clojureは は は型ヒンティングをサポートしており、コードをかなり高速化することができます。可能性としては、普通のScalaは普通のClojureより速いですが、ボトルネックを最適化する必要があるだけです。プログラムの実行時間の大部分は、実際のコードの少量によって生成されます。
Javaとの相互運用については、Scalaの方がJavaに近いですが、両言語ともうまく相互運用できると思っています。
プログラミングClojure Stuart Halloway が書いています: " [アクセスできます]. Javaコードから到達できるものは何でもです。そして、Scalaの作者であるMartin Oderskyは が書いた SunのJavaコンパイラを使用しているので、Scala側にはボールが落ちていないのだと思います。)
Rubyも好きですが、2つとも良い言語を選ぶのは難しいでしょう。なぜ、どちらを試すか悩むのですか? 両方試してみたらどうですか?Scalaは次のJavaになる可能性が高いですし、Lispは50年以上使われなかったのに、やっと使えるようになるとは思えません。しかし、Lispは独自の抽象化レベルにあり、Clojureはかなりシンプルなので、Scala + Clojureは(かなり複雑な)Scalaだけよりもそれほど難しくなく、きっとやってよかったと思うはずです。
さらに言えば、相互運用も可能です...。
* dalvik(アンドロイドのJVM)は、2010年の2.2バージョンでJITコンパイラを搭載しました。
関連
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
型に解決できない エラー解決
-
Jsoup-Crawlingの動作
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
アノテーション「@Retention」の役割
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
API の戻り値を処理するために ResponseEntity を使用する
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
java 365*1000*60*60*24 計算問題
-
テストが空であるかどうかを判断するためのオプションの処理