도와주세요!!
안녕하세요..
특정 드라이브에 File을 검사하여 File의 Size를 구하는 함수를 많들었는데요.
이게 파일이 많아지면 많아질수록 시간이 오래 걸리더라구요..ㅡㅡ;
제가 한것 말고 시간을 단축 할수 있는 방법이 뭐 없을까요.?
GetFileSize()는 드라이버에 파일이름을 검사하여 파일이 존재하면 Size 그렇지 않으면 0을 리턴하는 것이구요.
for()문에서 Total Size를 계산을 하는데요.
제생각으로는 for문은 어쩔수 없지만 GetFileSize()를 시간을 단축 해야 할것 같은데요..ㅡㅡ;
for(i = 0 ; i > 650 ; i++) {
sprintf(name, "file_%d.bin", i)
total_Size = total_Size + GetFileSize("/nand/", name);
}
unsigned int GetFileSize(char* seardir, char* searname) {
struct dirent** psDirItem;
struct stat stState;
unsigned int size = 0;
char npath[50];
int numOfItem;
int i, j, ret = 0;
numOfItem = scandir(seardir, &psDirItem, NULL, alphasort);
if(numOfItem <= 2) {
printf("No File In the Folder\n");
}
for(i = 0 ; i < numOfItem ; i++) { //File Name
if(ret == 0) {
if(strcmp(psDirItem[i]->d_name, searname) == 0) {
ret = 1;
for(j = i ; j < numOfItem ; j++) {
free(psDirItem[j]);
}
break;
}
}
free(psDirItem[i]);
}
free(psDirItem);
sprintf(npath, "%s%s", seardir, searname);
if(ret == 1) {
stat(npath, &stState);
size = stState.st_size;
}
else {
size = 0;
}
return size;
}
파일사이즈 계산하는거 치곤 코드가 넘기네요
코드 전체를 올린게 아니라 수정은 못해드리지만
최적화를 해보세요 파일사이즈 구하는거 간단한데 넘길다 ;;