[問題] 檔案 IO 加速一問
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
windows: C::B
Linux : gcc
問題(Question):
嘗試性的做了一下 "字母+數字" 的全排列方式
先做了一個檔案 ker1.txt
其內容如下: (a~z, 0~9 共 36 個字元各一行)
//= ker1.txt ==================
a
b
c
.
.
.
z
0
1
2
3
.
.
.
9
// ============================
之後跑跑以下的 code
// = kerker.c =================
#include <stdio.h>
#define N 2
int main () {
int i, n;
char key[] = "abcdefghijklmnopqrstuvwxyz0123456789";
char in[10], out[10], tmp[50];
sprintf(in , "ker%d.txt", N-1);
sprintf(out, "ker%d.txt", N);
freopen(in , "r", stdin);
freopen(out, "w", stdout);
while (gets(tmp) != NULL) {
for (i = 0; i < 36; i++) {
printf("%s", tmp);
putchar(key[i]);
putchar('\n');
}
}
return 0;
}
//=============================
逐一將 N 的值從 2 調到 4
依序產生
ker2.txt 到 ker4.txt 等檔案
似乎是檔案太大的關係,記事本已經無法打開 ker4.txt
於是我將實驗平台從 windows 上般到 Linux 機器上
成功產生以下檔案
-rw-r--r-- 1 xatier xatier 72 2011-02-15 18:51 ker1.txt
-rw-r--r-- 1 xatier xatier 3.8K 2011-02-15 18:52 ker2.txt
-rw-r--r-- 1 xatier xatier 183K 2011-02-15 18:52 ker3.txt
-rw-r--r-- 1 xatier xatier 8.1M 2011-02-15 18:55 ker4.txt
-rw-r--r-- 1 xatier xatier 346M 2011-02-15 18:56 ker5.txt
-rw-r--r-- 1 xatier xatier 2.0G 2011-02-15 19:01 ker6.txt
ker6.txt 大概跑了六分鐘左右,已經是 2G 大小的東西了 = =a
以 vim 開啟檢查,檔案內容無誤
爾後我測試了將 N 改成 7 的程式
至今已經花了快 半小時 結果還沒跑出來
========================================
想請教各位板上先進
像這種大型檔案的 IO 處理
有辦法用其他方法將 printf() putchar() 等函式加速嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.60.107.233
→
02/15 19:28, , 1F
02/15 19:28, 1F
→
02/15 19:30, , 2F
02/15 19:30, 2F
→
02/15 19:41, , 3F
02/15 19:41, 3F
→
02/15 19:41, , 4F
02/15 19:41, 4F
→
02/15 19:42, , 5F
02/15 19:42, 5F
xatier@tcirc:~/etc$ ls -l -h
-rw-r--r-- 1 xatier xatier 72 2011-02-15 18:51 ker1.txt
-rw-r--r-- 1 xatier xatier 3.8K 2011-02-15 18:52 ker2.txt
-rw-r--r-- 1 xatier xatier 183K 2011-02-15 18:52 ker3.txt
-rw-r--r-- 1 xatier xatier 8.1M 2011-02-15 18:55 ker4.txt
-rw-r--r-- 1 xatier xatier 346M 2011-02-15 18:56 ker5.txt
-rw-r--r-- 1 xatier xatier 2.0G 2011-02-15 19:01 ker6.txt
-rw-r--r-- 1 xatier xatier 2.0G 2011-02-15 19:10 ker7.txt
xatier@tcirc:~/etc$ ls -l
-rw-r--r-- 1 xatier xatier 72 2011-02-15 18:51 ker1.txt
-rw-r--r-- 1 xatier xatier 3888 2011-02-15 18:52 ker2.txt
-rw-r--r-- 1 xatier xatier 186624 2011-02-15 18:52 ker3.txt
-rw-r--r-- 1 xatier xatier 8398080 2011-02-15 18:55 ker4.txt
-rw-r--r-- 1 xatier xatier 362797056 2011-02-15 18:56 ker5.txt
-rw-r--r-- 1 xatier xatier 2147483647 2011-02-15 19:01 ker6.txt
-rw-r--r-- 1 xatier xatier 2147483647 2011-02-15 19:10 ker7.txt
↑
int 上限
話說 ls 指令似乎無法辨識 2G 以上的檔案大小
※ 編輯: xatier 來自: 210.60.107.233 (02/15 19:46)
→
02/15 19:53, , 6F
02/15 19:53, 6F
→
02/15 19:54, , 7F
02/15 19:54, 7F
→
02/15 19:57, , 8F
02/15 19:57, 8F
→
02/15 19:58, , 9F
02/15 19:58, 9F
→
02/15 20:01, , 10F
02/15 20:01, 10F
→
02/15 20:02, , 11F
02/15 20:02, 11F
→
02/16 10:17, , 12F
02/16 10:17, 12F
→
02/16 10:17, , 13F
02/16 10:17, 13F
→
02/16 10:17, , 14F
02/16 10:17, 14F
→
02/16 12:46, , 15F
02/16 12:46, 15F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
0
15
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章