Silverlight 2のDLR言語とC#の速度の違いは何ですか?
-
06-07-2019 - |
質問
Silverlight 2の場合、プログラミングの選択肢は次のようになります。
- C#
- VB
- DLRスクリプト言語
- IronRuby
- IronPython
- 残念ながら無視された(キャンセルされない場合)Managed jScript
これは、ネイティブ言語(C#およびVB)がDLR言語よりも1桁ほど速い場合ですか?
「生きる」という希望Silverlightクライアントプログラミングを行うときのIronPythonで、またはプロセッサ集中型の作業のためにC#にドロップすることを期待すべきですか?
言語に関する私の調査は、 C#およびVBのサンプルセットおよび DLRについて説明しているこのページ。
解決
残念ながら、この質問に対する難しい答えはありません。同じ言語のパフォーマンスでも、多くのパラメーターに基づいて大きく異なります。
はい、一般では、VB.NetおよびC#はDLRベースの言語よりも高速です。静的言語は、メソッドのバインドなど、コンパイル時により多くの作業を行います。このタイプの作業は、DLRベースの言語では実行時に実行する必要があるため、実行時に少しコストがかかります。
ただし、DLRおよびDLRベースの言語の最適化には多くの作業が必要です。この作業の多くは、さまざまなキャッシュなどによって軽減されます。多くのタイプのアプリケーションでは、パフォーマンスの違いは無視できます。
プロファイラーが実際に問題だと言わない限り、パフォーマンスだけに基づいてDLRベースの言語を除外しません。
他のヒント
通常、アルゴリズムを最適化すると、静的言語で書き直すよりもはるかに大きな効果があります。
.NET Rocksの Show#429 に興味があるかもしれません。 Michael Foordとのインタビュー。 transcript からの関連する抜粋を次に示します。
動的言語は非常に簡単です テスト、彼らは本当に適しています テスト駆動開発アプローチ 開発者はそれで取っていました 時間。しかし、私は パフォーマンス上の理由、彼らは持っているだろう ある時点でC#で書き換える それから3年後 40,000行のIronPythonコードを取得し、 約140.000行あります テストコード、私たちはいくつかのタイプを持っています 毎回約300行のC# 彼らはパフォーマンスを見に来ます 彼らが来て、ロケートするたびに 速く動作しない操作 十分な、私たちは得ることができました 改善することで必要な速度 アルゴリズム、Pythonの改善による コードとC#にドロップする必要はありません、 プログラムの実行が遅い理由は 通常、言語のせいではありません。 それはプログラマのせいです 開発者。
Booも使用できます。サンプル boo