VB .NETは、算術のネイティブコードと比較してどれくらい速くなりますか?
-
24-09-2019 - |
質問
たくさんの数学を行うソフトウェアを書く必要があります。ほとんどの場合、DCTを計算するための整数によるマトリックスの乗算です。 VB .NETと比較して、コードがネイティブCで実行されると予想されるのはどれくらいですか? 2の因子、10の係数、1000の係数...?誰かがこれについて統計を試して収集しましたか?
解決
製品属性セットに新しいイメージ属性 slideshow_image を追加することができます。
他のヒント
.NETコードは、実行前にネイティブコードにJITコンパイルされているため、一般的にネイティブコードよりも遅くはありません。因子<10が期待されます。
さらに、適応最適化手法では、実行中にコードをプロファイルし、典型的な静的コンパイラよりも多くの情報を獲得します。したがって、JITは、さらなる最適化のために、より多くの情報に基づいた決定を下すことができます
VBはCほど速い93.7%です もしも 適切なシナリオを選択します。
実際、「ネイティブC」にMalloc()とFree()への定期的な呼び出しが含まれている場合、VB.NETのようなあらゆる種類のGargage収集言語が文字通りその周りにサークルを実行します。 GCは、内側ループのmallocよりも10倍高速になる可能性があります。
故障してCを使用する場合は、この問題を回避するために、新しいものを作成する代わりに1回だけ宣言した構造を再利用してみてください。あなたのソリューションがそれを貸していれば、これはVBでも利益を得るかもしれません。ただし、プログラムするのは難しく、GCは非常に高速です。
境界/オーバーフローチェックに関しては、速度が重要であり、テストが発生しないことが明らかになっている場合、エラーや異常から何百万もの人々を危険にさらしていない場合、時間の無駄です。しかし、それらを取り除くことができない場合、あなたの時間は、より迅速にプログラムできる言語でさらに価値がある可能性があります。
深刻なサイズと使用量が予想される場合、タスクを制御プログラムで分割し、割り当てられた「タスク定義」をタスクソルバーごとのファイル、またはデータベースで共有ディレクトリに保存することを支払います。次に、プロセッサごとのソルバー(HT CPUごとに2)またはネットワークコンピューターを実行できます。キュー構造に疲れてください - 原子的に「マークテイクとゲットダタ-if-not-not-taken」が難しいです。開始するタスクソルバーの数を知っています。開発したイメージングユーティリティでこれを行いました。予想よりもはるかに簡単で、以前のバージョンをクリーム化しました。さらに、複数を使用する場合 プロセス 適切に配分可能な問題ドメインを使用すると、マルチスレッドのわずかに重要なプログラミングの負担を回避できます。または、あなたのcullyの装具が正しい場所にあることを同僚に納得させる。平和。