2011-07-19 14 views
0

以下のコードを見てください。C#CSV解析の並列化

void func() 
{ 
    for(;;) 
    { 
     var item = new Item(); 
    } 
} 

Itemそのコンストラクタ表示されているとおり

List<string> data = new List<string>(); 
Item() 
{ 
    //read from csv into List<string>data 
} 

を次のように私は、いくつかのCSVファイルを読み込んでクラスである、CSVファイルは別個のものであるとユニークな変数に読み込まれます。私はこれを並列化したいと思っています。すべてのデータがネットワークドライブにあります。私はこの場合の制限がディスクアクセスであることを理解しています。誰かがこれを並列化するためにできることを提案することはできますか?

+0

制限はディスクスピードであり、使用しているものに応じて結果を同期する必要がある場合もあるため、潜在的に結果サイドでもあります。 – weismat

答えて

1

を見て、しかし、私が正しくparallel.ForEachを思い出すと、.net 4の方法です。異なるバージョンを使用している場合は、ロックを使用する別のメソッドを見つける必要があります。

csvからデータを読み込む場合、ADO.netには、スキーマファイルに基づいてcsvファイルを読み込むことができる組み込み関数があります。これは、私の経験ではcsvファイルを読み込むための最も速い方法の1つです。私はGoogleの http://www.daniweb.com/web-development/aspnet/threads/38676

見つかり

迅速なリンクはまた、私はこのhttp://www.codeproject.com/KB/database/CsvReader.aspxで大きな成功を収めてきました。それはado.netバージョンより少し遅いですが、使いやすく、スキーマファイルは必要ありません。

あなたがado.netを使用し、クレジットカード番号のような大きな文字列数値を使用していて、科学記法のように見えるものがある場合は、あなたのスキーマファイルを調整する必要があります。コーディング担当者はこれについて不平を言う。コーディング

幸せ。

+0

私はこのリンクも追加したいと思っていましたが、データベースにインポートすることなくCSVファイルを検索するためにlinqを2,3回使用していたことを忘れていました。これが役に立ったらhttp://stackoverflow.com/questions/5116604/read-csv-using-linq – Robbiekaze

1

すべてのファイルがParallel.ForEachステートメントのを見て、ユニークで独特の変数に格納されている場合 - Parallel.ForEachは並行して何かを実行する最も簡単な方法である前に述べたようにhttp://msdn.microsoft.com/en-us/library/dd460720.aspx