More actions
imported>Unknown No edit summary |
(Repair batch-0008 pages from live compare) |
||
| Line 7: | Line 7: | ||
#include <time.h> | #include <time.h> | ||
int main(int argc, char * argv | int main(int argc, char * argv[]) { | ||
FILE * fileHandle; | FILE * fileHandle; | ||
int i, request; | int i, request; | ||
| Line 13: | Line 13: | ||
if (argc != 3) { | if (argc != 3) { | ||
fprintf(stderr, "Usage : %s | fprintf(stderr, "Usage : %s [length of dummy file] [dummy file name]", argv[0]); | ||
exit(1); | exit(1); | ||
} | } | ||
request = atoi(argv | request = atoi(argv[1]); | ||
fileHandle = fopen(argv | fileHandle = fopen(argv[2], "wb"); | ||
if (!fileHandle) { | if (!fileHandle) { | ||
| Line 45: | Line 45: | ||
#include <time.h> | #include <time.h> | ||
int main(int argc, char * argv | int main(int argc, char * argv[]) { | ||
int divTable | int divTable[6]; | ||
FILE * fileHandle; | FILE * fileHandle; | ||
unsigned long request, extractMask; | unsigned long request, extractMask; | ||
| Line 54: | Line 54: | ||
if (argc != 3) { | if (argc != 3) { | ||
fprintf(stderr, "Usage : %s | fprintf(stderr, "Usage : %s [length of dummy file] [dummy file name]", argv[0]); | ||
exit(1); | exit(1); | ||
} | } | ||
request = atoi(argv | request = atoi(argv[1]); | ||
fileHandle = fopen(argv | fileHandle = fopen(argv[2], "wb"); | ||
if (!fileHandle) { | if (!fileHandle) { | ||
| Line 70: | Line 70: | ||
for (i = 0, extractMask = 0x0000000F; i < 6; i++, extractMask <<= 4) | for (i = 0, extractMask = 0x0000000F; i < 6; i++, extractMask <<= 4) | ||
divTable | divTable[i] = (request & extractMask) >> (i * 4); | ||
for (i = 0; i < 6; i++) | for (i = 0; i < 6; i++) | ||
if (divTable | if (divTable[i]) { | ||
fragSize = 0x00000001 << (i * 4); | fragSize = 0x00000001 << (i * 4); | ||
| Line 86: | Line 86: | ||
memset(frag, 0, fragSize); | memset(frag, 0, fragSize); | ||
for (j = 0; j < divTable | for (j = 0; j < divTable[i]; j++) | ||
fwrite(frag, sizeof(char), fragSize, fileHandle); | fwrite(frag, sizeof(char), fragSize, fileHandle); | ||
| Line 105: | Line 105: | ||
---- | ---- | ||
zennith | |||
Latest revision as of 01:40, 27 March 2026
지정한 크기의 파일을 생성하는 프로그램
source code
처음의 착상
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char * argv[]) {
FILE * fileHandle;
int i, request;
time_t start, end;
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; i < request; i++)
fputc('\0', fileHandle);
end = clock();
printf("\n%f\n", (double)(end - start) / CLK_TCK);
fclose(fileHandle);
return 0;
}
신경쓴 버전. 1.1?
#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초를 기록했다. 두번째 것을 만들면서.. 함수화 같은 거도 좀 했으면 좋겠다는 생각도 무럭무럭 무럭 들었으나.. 그놈의 귀찮음이 뭔지 ; 아무튼 발전이 없는 나로군.
zennith