7

私は間違いなくScala型推論エンジンにワクワクしていますが、実際の環境では次のようになります。

  1. パフォーマンスの低下はどれくらいですか?

  2. コンパイル時または実行時に、型はいつ推測されますか?

4

4 に答える 4

18

Scalaの精巧で強力な型は、コンパイル時にのみ存在します(*)。ソース(指定した場所)から解析され、推測され、チェックされ、最後に破棄されます。最後のものは無意味に聞こえるかもしれませんが、これはJVMの手口であり(型消去を参照)、言語設計者の観点からは非常に便利です。

したがって、質問に答えるには、実行時に型が明示的に指定されたか推測されたかに違いはありません。唯一の違いは、プログラムのコンパイルにかかる時間です。

(*)2.10リリースには、プログラムが実行時にもその型情報にアクセスできるようにするリフレクションライブラリが付属します。これにより、自由度が増します。これを使用すると、もちろん実行時にCPUサイクルが消費されますが、前述の点は変更されません。

于 2012-12-09T09:02:46.960 に答える
4

パフォーマンスの低下はどれくらいですか?

実行時のパフォーマンスは、一般的にJavaに匹敵すると言われています。コンパイラが複雑なため、通常、コンパイル時間はJavaに比べて長くなります。

コンパイル時または実行時に、型はいつ推測されますか?

コンパイル時。

このビデオでは、8:50から12:50頃に、マーティンが「現実世界」の環境での使用法とパフォーマンスについて触れています。彼は、小さなスタートアップから大企業まで、Scalaを使用している企業がたくさんあると述べています。

于 2012-12-09T06:02:50.180 に答える
0

これはMartinOderskyによるこの回答で言及されています:なぜIntelliJ IDEAはScalaをそれほど遅くコンパイルするのですか?「型推論は、特に暗黙の検索を伴う場合、コストがかかります。」

于 2014-01-23T16:39:42.303 に答える
-2

問題は、Scalaのコンパイル時間がJavaよりも長いという問題の原因です。私はコンパイラ構築の専門家ではないので、言うのは難しいです。私が言えることは、型推論はKotlinでもGroovy2.0でも明らかにコストがかからないということです。Scalaの速度を低下させるのは、暗黙の検索など、他の何かである必要があります。

于 2012-12-09T14:25:56.690 に答える