- - PR -
【C#】単一テキストファイルから重複行削除
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-13 16:21
上に同じw
夏椰さんの方法が一番速くて安定しているように思います。 上の時間でいけそう・・・ #JETなのは何故? | ||||||||
|
投稿日時: 2006-06-13 16:27
私が提示したプログラムでは ローカルで6.5Mのファイル(1〜65536の値が数回繰り返した状態・・・だったかな?)で すぐに返ってきますね。<結果 #ちなみにWinXP Pentium4 3GHz メモリ1G・・・だったかな?
適当にコピってみたりしているから(w _________________ 夏椰 @ わんくま同盟 夏椰の庵 Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 ) | ||||||||
|
投稿日時: 2006-06-13 16:33
>夏椰様
そのような使い方を始めて見ました。目からウロコがボロボロ落ちましたw 奥が深いです・・・。 勉強になりますm(_ _)m ぼのぼの様 >それはともかく、ReadToEnd+Splitで時間がかかってる気がします。 >ReadLineでループさせたらどうなりますか? R・田中一郎様 >夏椰さんの方法が一番速くて安定しているように思います。 ReadToEnd+SplitだとReadLineで一行ずつ処理するよりも時間がかかってます。 夏椰様のレスを見るまでは一番早いのはhushtableなのかなぁ・・・と。 夏椰様の方法を試してみます。 | ||||||||
|
投稿日時: 2006-06-13 16:43
それはそうでしょうね。 一度読み込んた大きなデータを配列に分解して再度格納するのですから。 hashtable を使う方法なら、1件読んでhashtableに聞けば教えてくれるので、配列を用いる必要は無いです。 | ||||||||
|
投稿日時: 2006-06-13 17:37
夏椰様
私の環境もWinXP Pentium4 3GHz メモリ1Gとほぼ同等のスペックで、 4万行(全行40文字)で実行してみたのですが、帰ってこなくなりましたorz 行の中身はランダム生成された文字列(例:4940ad9a59434782a9e402a294ebd3)30桁に @ドメイン.co.jpなどのついたメールアドレスデータです。 >R・田中一郎様
配列を使用したほうが早くなりイメージでいましたが、分解作業などで 遅くなるのですね。勉強になりますm(_ _)m | ||||||||
|
投稿日時: 2006-06-13 17:48
申し訳ないのですが、次の点を確認させて下さい。 ・少ない件数で試してみる。 ・どの部分で帰ってこないのか確認する。(DBエンジン側の処理で帰ってこない?) ・書き込み処理はどうしてます? | ||||||||
|
投稿日時: 2006-06-13 18:04
Cygwinをインストールして、uniq コマンドとか、sedとか、せめて Perl を使う方が楽なのではないかと...
"鶏を割くに焉んぞ牛刀を用いん"というか、ザク一匹にソーラーシステムのような気が... _________________ がうしぇ 人生のデザインパターン.... | ||||||||
|
投稿日時: 2006-06-13 18:09
通番+30文字@aaaa.co.jp 通番+30文字@bbbb.co.jp (通版=1〜65536) のデータが入ったトータル件数131,072件(ファイルサイズ:7,843,840 バイト) でサンプルとして提示したプログラムを動かしたところ 30秒足らずで表示する処理は終わりましたね。 #ちなみにプログラムはVS2005 C# Expressで実行しています。 R・田中一郎さんもおっしゃっていますが、 データの取得で返ってこないのかなどを調べる必要があると思います。 現状のプログラムはデータを取得するのみの状態でしょうか? 問題切り分けのためにも、1つずつ処理を実装して、確認してみてください。 また処理内容に不安などがあれば、出来る範囲でソースを提示してみてください。 _________________ 夏椰 @ わんくま同盟 夏椰の庵 Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 ) |