~cpp
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char * argv[]) {
int divTable[6];
FILE * fileHandle;
unsigned long request, extractMask;
int i, j, fragSize;
time_t start, end;
char * frag;
if (argc != 3) {
fprintf(stderr, "Usage : %s [length of dummy file] [dummy file name]", argv[0]);
exit(1);
}
request = atoi(argv[1]);
fileHandle = fopen(argv[2], "wb");
if (!fileHandle) {
fprintf(stderr, "File open error occured.");
exit(1);
}
start = clock();
for (i = 0, extractMask = 0x0000000F; i < 6; i++, extractMask <<= 4)
divTable[i] = (request & extractMask) >> (i * 4);
for (i = 0; i < 6; i++)
if (divTable[i]) {
fragSize = 0x00000001 << (i * 4);
frag = (char *)malloc(fragSize);
if (!frag) {
fprintf(stderr, "memory allocation error occured.");
fclose(fileHandle);
exit(1);
}
memset(frag, 0, fragSize);
for (j = 0; j < divTable[i]; j++)
fwrite(frag, sizeof(char), fragSize, fileHandle);
free(frag);
}
end = clock();
printf("\n%f\n", (double)(end - start) / CLK_TCK);
fclose(fileHandle);
return 0;
}
12389523 바이트의 쓰레기 파일을 각각 생성하는데 처음에 짠 허접 버전과 두번째의 약간 개선 버전이 각각 0.991초와 0.37초를 기록했다. 두번째 것을 만들면서.. 함수화 같은 거도 좀 했으면 좋겠다는 생각도 무럭무럭 무럭 들었으나.. 그놈의 귀찮음이 뭔지 ; 아무튼 발전이 없는 나로군.