-1

31個のEEGチャネルから、2分ごとにサーバーからX量のデータを含むファイルを取得し、ファイルの取得を開始する時刻と平均化されたデータをディスクに書き込む時刻をMySQLデータベースに書き込むデーモンがあります。ファイルを処理する平均時間のように見えるY時間があることがわかりました。私が抱えている問題は、一部の実行で、その時間がDの半分の時間よりも短くなることです。結果は同じです...プロセスは実行されています。スレッドでは、私の質問は次のとおりです。

  1. ランダムOSがそのスレッドに完全に空のタスクプロセッサを割り当て、他のスレッドの2倍の速度で実行されたと想定する必要がありますか?

  2. どうすれば違いがわかりますか?

相対平均時間の半分未満で実行

  • 最初のノード:24/600実行。
  • 2番目のノード:50/600実行。

ノードには他のプロセスが実行されていません。

プロセス自体の間にガベージコレクターを強制してメモリを解放しようとしましたが、同じ結果になりました。

これは、横軸の1つのノードの実行数と、秒単位の時間です。実行しました

プロセスを終了する時間

(平均87.13)

別のノードでの2番目のテストは、次のように実行されました。

2番目のノードテスト

(平均= 85.5)

相対平均では少し遅くなりますが、平均パフォーマンスが向上するランダムな1/2時間です。

少なくとも反対票を投じている場合は、なぜ有効な質問ではないのかコメントするので、このような質問はもう一度しません¬_¬

4

1 に答える 1

0

それが本当に usr answer のような競合の問題であるかどうかはわかりませんが、それは応答ファイルを書き込んでいました。使用していた文字列バッファが遅すぎてデータ取得を実行できませんでした。

    System.IO.StreamWriter sfile =   new System.IO.StreamWriter(path+file);
    for (int x = 0; x != chans; x++){
       for (int xx = 0; xx != maxsize; xx++){
           sql += data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n";
       }
       sfile.Write(sql);
       sql = "";
     }

に:

    System.IO.StreamWriter sfile =   new System.IO.StreamWriter(path+file);
    for (int x = 0; x != chans; x++){
       for (int xx = 0; xx != maxsize; xx++){
           sfile.Write(data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n");
       }
     }

バッファはあまり良い選択ではなかったようです...現在、すべてのテストは約*ストロングテキスト* 16秒で実行されています。35秒(非常にラッキーな状態)から92秒(平均)

于 2013-02-04T08:25:09.487 に答える