[問題] 大矩陣轉置問題

看板Perl作者 (恍晃惶慌)時間15年前 (2008/11/13 01:25), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/2 (看更多)
各位好,小弟是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

11/13 13:35, , 1F
有關seek,參考看看 http://tinyurl.com/5uuvd6
11/13 13:35, 1F

11/13 13:36, , 2F
有關 read,參考看看 http://tinyurl.com/69yyhh
11/13 13:36, 2F

11/15 14:38, , 3F
(就我知道的方式)檔案輸入太慢了... orz
11/15 14:38, 3F
文章代碼(AID): #196n6GvZ (Perl)
文章代碼(AID): #196n6GvZ (Perl)