以下是引用TonyDeng在2015-3-12 13:24:49的发言:
我後面的C解決實現,理論上是最快的,因爲預先申請了(可按需調整)100M的堆空間爲拼接結果數據所用,而不是像C#方案那樣用動態容器有調整容量的開銷(其實也可以事先申請足夠的空間避免調整),所以執行起來,前者比後者快一點。但這種方案的關鍵處也正在這裏,在低內存機器上,未必可以得到100M的堆空間,那時就需要用磁盤文件了,變得由外設速度決定。
記得我曾經就這個問題,在你以前發過的帖子中提示,說應在內存中把數據整理好再寫盤,你的回應是問題沒那麽簡單。
是阿,預先申請一定會比動態調整快,但是預先申請常遇到,不是不夠就是太多.(C要是慢我就不會用它了)
雖然我不太記得了,不過我的回應應該是針對整個程式,而不只是對單一函式,我之前已經有資料覆蓋的問題.
但如果針對目前合併CSV的部分來說,我確實是已經先在內存整理好再寫出,所以合併時才能少掉很多額外的考慮和處理.
直接暴力合併就能OK的程度.
不過話說回來使用者開個幾GB的二進位檔,又要求要能瞬間完成的話,那只好直接翻桌了.