The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
приличная нагрузка на CPU правда в течение нескольких секунд!!!, !*! wizard, 08-Апр-04, 09:54  [смотреть все]
Всем доброго утра , дня и ночи !
Пишу порогу по анлизу squid лога на си. Сталкнулся  вот с такой проблемкой.
Делаю access.log 100mb и натравливаю мою программку на этот лог, она его лопатит секунд 35,40 но при этом приличная нагрузка на CPU от 80 до 99,9.
Вот мой кодинг:
void open_file();
void open_files_otbor_dannuh();

//===================================================================
void open_files_otbor_dannuh()
{
  time_t now;
  char dte[30];
  now = time(NULL);
  strcpy(dte,ctime(&now));
  printf("%s",dte);
}

//====================================================================
void open_file()
{
  FILE *fp;
  FILE *fd;


        char *date;
        char *ishod_traf;
        char *ip;
        char *tcp_miss;
        char *vhodychiy_traf;
        char *tip_pered;
        char *http_url;
        char *musor_1;
        char *musor_2;
        char *musor_3;

  int i,d;
  char *new_date;


if((fp=fopen("access.log", "r"))==NULL)
   {
    printf("Error fopen files");
     exit(1);
   }
if((fd=fopen("access.sort", "w+"))==NULL)
   {
    printf("Error fopen files");
    exit(1);
   }

  while(fp){
  http_url=(char *) malloc(1000);
  tcp_miss=(char *) malloc(100);
  new_date=(char *) malloc(100);
  ishod_traf=(char *) malloc(100);
  ip=(char *) malloc(100);
  vhodychiy_traf=(char *) malloc(100);
  tip_pered=(char *) malloc(100);
  musor_1=(char *) malloc(100);
  musor_2=(char *) malloc(100);
  musor_3=(char *) malloc(100);
  date=(char *) malloc(100);

if(fscanf(fp,"%s %s %s %s %s %s %s %s %s %s\n", date,ishod_traf,ip,tcp_miss,vhodychiy_traf, tip_pered,http_url, musor_1
d=atoi(date);
strncpy(new_date, ctime(&d),24);
fprintf(fd,"%s %s %s %s %s\n",new_date, ishod_traf,ip,vhodychiy_traf, http_url);

free(http_url);
free(tcp_miss);
free(new_date);
free(date);
free(ip);
free(ishod_traf);
free(vhodychiy_traf);
free(tip_pered);
free(musor_1);
free(musor_2);
free(musor_3);

  }else{
         exit(1);
       }
    }
   fclose(fd);
fclose(fp);
}
//====================================================================
int main(void)
{
  open_file();
  return 0;
}

Проверял существенная нагрузка возникает при записи в fd;




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру