4

MS SQL データベースに接続していくつかのレコードを処理し、ファイルを作成する古いレガシー Perl スクリプトが多数あります。時間が経つにつれて、毎日のトランザクションのサイズが大きくなり、これらのスクリプトはますます高価になっています。

さらに、データベースはますます多くのテーブルとともに成長し、古い Perl スクリプトを変更するのは面倒です。.NET (C#) での主要なスクリプトのいくつかをやり直すことを考えていました。

Windows Server を実行しているマシンで、一方を使用する場合と他方を使用する場合の速度の利点はありますか?

やはり考え方は

  1. クエリを実行

  2. いくつかの基本的な書式設定による結果の処理

  3. 結果をファイルに書き込む

4

3 に答える 3

10

それぞれのプログラマーがどれほど愚かであるかに依存します。適切に初期化されていれば、どちらも、ディスク システムに関してどのような帯域幅を割り当てても快適に飽和するはずです。そこにボトルネックがあります。大規模なキャッシュ書き込み (.NET BufferedStream) を作成し、SSD または高速の準備ができていることを確認してください。適切なプログラミングのパフォーマンスのボトルネックは、このタイプの作業のディスク サブシステムです。

于 2012-01-25T07:36:58.860 に答える
1

どちらのタスクも、どちらの言語でも同じように高速に実行できます。また、両方の言語でひどく間違って実行される可能性があり、非常に遅くなる可能性があるため、考慮すべき点があります.

あなたのコメントの別の1つから、SQLサーバー側でフォーマットを行うと述べています。これらのクエリは、アプリ側で実行し、db サーバーへの影響を最小限に抑えるために、このスクリプトをより高速なマシンに移動した場合、潜在的にはるかに安価になります。

ハードドライブの速度が現在の最大の問題だと思います。このスクリプトの実行中はリソースを監視する必要があります -- CPU を使い果たしていますか? メモリへの読み取り/書き込みが多いですか? (そうすべきではありません)。ほとんどの場合、ディスク i/o で待機しているだけですか? そうである場合は、状況に最も適したものに応じて、ストレージをより高速なディスク、raid、または ssd にアップグレードすることを検討する必要があります。

ディスクの最適化のようなものでも役立つ場合があります。

CPU/メモリーに十分な余裕があるが、低速ディスクを避けられない場合は、書き込む前にメモリー内のすべての出力を圧縮することを検討することもできます (繰り返しますが、これが良い考えであると仮定すると、これらのレポートがどこに行くかによって大きく異なります)。および必要な形式)。

于 2012-01-25T16:21:39.277 に答える
-3

書き込みパフォーマンスに関しては、これらの言語間に大きな違いはないと思います (通常、ボトルネックは CPU の処理能力ではなく、ハードディスクになります)。むしろ「コードを維持するコスト」を検討する必要があります。C# では、はるかにクリーンなコードを取得できます。MS SQL との統合はおそらくより効率的であり、スレッドを使用できることは言うまでもありません。

より良いコード、より保守しやすく、おそらくより高速です。ええ、C# は良い考えです

于 2012-01-25T07:37:54.427 に答える