看板 Perl 關於我們 聯絡資訊
各位好,小弟是perl的新手(基本上是寫程式的新手 =.=) 我在板上找了很久但是都沒有答案只好來發問了 我有一個*.txt的檔案,檔案大小約580MB 每一列都記錄了32988個數字(0~100不等,全部統一用空白鍵分隔),共9190列 基本上就是有一個9190*32988的數字矩陣,我現在想要改寫成32988*9190 以下是我的程式碼: open OUT, "> FILENAME"; for ($i=0;$i<32988;$i++) { open IN, "< FILENAME"; while (<IN>) { @token=(); @token = split(" ",$_); print OUT "$token[$i]"; } close (IN); } close (OUT); 我知道這是很笨又很花時間的方法,因為我犯了兩個錯 1. 不停的開關一個580MB的檔案(有試過整個讀進來再做轉置,結果Out of Memory) 2. 每次都要產生一個陣列(有試過seek和read,但是都沒有成功....應該是我寫錯了) 但是我想了好久都不知道該怎麼加快速度,之前沒什麼寫程式的經驗 現在上面的又要我一個禮拜要搞定,真的不知道該怎麼辦.... 希望有人願意伸出援手,謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.81.33
s5846125:有關seek,參考看看 http://tinyurl.com/5uuvd6 11/13 13:35
s5846125:有關 read,參考看看 http://tinyurl.com/69yyhh 11/13 13:36
giacch:(就我知道的方式)檔案輸入太慢了... orz 11/15 14:38