'Program Language/C(lib)'에 해당되는 글 2건

  1. 2011.12.07 log 찍기
  2. 2011.11.22 fopen fgets strcpy sprintf

log 찍기

2011.12.07 12:09 from Program Language/C(lib)



GeSHi © 2004-2007 Nigel McNie, 2007-2010 Benny Baumann, 2008-2009 Milian Wolff
  1. #include <stdio.h>
  2. #define MAX 123121
  3. void do_something()
  4. {
  5.         usleep(100);
  6. }
  7.  
  8. int main(int argc, char **argv)
  9. {
  10.         int total=MAX,cnt=0,per=0;
  11.         printf(" 0%%\n");
  12.         for(cnt=0;cnt<MAX;cnt++)
  13.         {
  14.                 if(cnt==total/100*per) printf("\r\b\r%2d%%\n"
     
    ,(per++));
  15.                 do_something();
  16.         }
  17.         printf("done\n");
  18. }
  19.  
Parsed in 0.006 seconds at 49.49 KB/s



total/100*per 아마 이 부분이 꽤 많은 cycle을 잡아먹겠지?




if(cnt==total/100*per) 부분

# gcc testlog.c -S 
.L6:
movl -4(%rbp), %ecx
movl $1374389535, %edx
movl %ecx, %eax
imull %edx
sarl $5, %edx
movl %ecx, %eax
sarl $31, %eax
movl %edx, %ecx
subl %eax, %ecx
movl %ecx, %eax
imull -12(%rbp), %eax
cmpl -8(%rbp), %eax
jne .L5

이랬던 코드가
-O2옵션을 주게되면

#gcc testlog.c -S -O2
.L7:
imull $1231, %edx, %eax
movl %edx, %ebp
cmpl %ebx, %eax
jne .L5

 
 이렇게 줄어들게 된다.

ps. 원래 의도한게 이게 아니였는데 
당연한 글이 됐다.

 
신고

'Program Language > C(lib)' 카테고리의 다른 글

log 찍기  (0) 2011.12.07
fopen fgets strcpy sprintf  (0) 2011.11.22
Posted by Leo 리오 트랙백 0 : 댓글 0
GeSHi © 2004-2007 Nigel McNie, 2007-2010 Benny Baumann, 2008-2009 Milian Wolff
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc,char** argv)
  4. {
  5.         char* FileName = argv[1];
  6.         FILE* file = fopen(FileName,"r");
  7.         if(!file)
  8.                 perror("error : file open error\n");
  9.  
  10.         char s[256];
  11.         for(;fgets(s,100,file);)
  12.         {
  13.                 char* k=s;
  14.                 char buf[256];
  15.                 for(k=s;*k;k++)
  16.                         if(*k==',')
  17.                         {
  18.                                 strcpy(buf,k+2);
  19.                                 sprintf(k, "\"\"%s",buf);
  20.                                 break;
  21.                         }
  22.  
  23.                 for(k+=2;*k;k++)
  24.                         if(*k==',')
  25.                         {
  26.                                 strcpy(buf,k+2);
  27.                                 sprintf(k, "\"\"%s",buf);
  28.                                 break;
  29.                         }
  30.                 s[strlen(s)-1]=0;
  31.                 printf("events.put(new Event(\"%s\"));\n",s);
  32.         }
  33.         fclose(file);
  34.  
  35. }
  36.  
신고

'Program Language > C(lib)' 카테고리의 다른 글

log 찍기  (0) 2011.12.07
fopen fgets strcpy sprintf  (0) 2011.11.22
Posted by Leo 리오 트랙백 0 : 댓글 0