[問題] 大矩陣轉置問題
各位好,小弟是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
11/13 13:35, 1F
→
11/13 13:36, , 2F
11/13 13:36, 2F
→
11/15 14:38, , 3F
11/15 14:38, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
問題
0
3