私のコードは:
int linenumber = File.ReadLines(path).Count();
ただし、1ギガ程度のサイズのファイルの場合、長い時間(約20秒)がかかります。
誰でもこの問題を解決するためのより良い方法を知っていますか?
更新 6 :
私はあなたのソリューションをテストしました:
約 870 mb サイズのファイルの場合:
方法 1: { my code
time(seconds) : 13
}
方法 2 : (からMarcinJuraszek & Locke
) (同じ) {
time(seconds) : 12
}
方法 3 : (からRichard Deeming
) { time(seconds) : 19
}
方法 4 : (からuser2942249
) { time(seconds) : 13
}
方法 5 : (from Locke
) {time(seconds) : 13
は同じlineBuffer = {4096 , 8192 , 16384 , 32768} }
方法 6 : (からLocke edition 2
) { time(seconds) : 9
for Buffer size = 32KB
, time(seconds) : 10
for Buffer size = 64KB
}
私が言ったように、私のコメントでは、native code
私のPCでこのファイルを開くアプリケーション()があります5 second
。したがって、これはnot about h.d.d speed
です。
By Compiling MSIL to Native Code
、違いwas not obvious
。
Conclusion
:この際、他の方法よりも送料Locke method 2
がかかります。faster
だから私は彼の投稿を としてマークしましたAnswer
。しかし、この投稿は、もしあれば開かれますfind better idea
。
vote up
私を助けてくれる親愛なる友人に+1を与えましたto solve the problem
。
ご協力いただきありがとうございます。興味深いより良いアイデア。よろしくスマートマン