Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/mty-makai/mty.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 114 by chapuni, Tue Apr 10 02:22:06 2007 UTC revision 115 by notanpe, Tue Apr 10 10:30:12 2007 UTC
# Line 693  set_salt(signed char *code, Line 693  set_salt(signed char *code,
693  }  }
694    
695  static  static
 unsigned  
 usec()  
 {  
 #if !defined(WIN32)  
   struct timeval tv;  
   gettimeofday(&tv, NULL);  
   return 100 * tv.tv_sec + (tv.tv_usec / 10000);  
 #else  
   struct timeb tm;  
   ftime(&tm);  
   return 100 * tm.time + tm.millitm / 10;  
 #endif  
 }  
   
 static  
696  int  int
697  log_printf(FILE *ofp, char const *fmt, ...)  log_printf(FILE *ofp, char const *fmt, ...)
698  {  {
# Line 767  main(int argc, char *argv[]) Line 752  main(int argc, char *argv[])
752    FILE *ofp;    FILE *ofp;
753    FILE *sfp;    /* scoreboard */    FILE *sfp;    /* scoreboard */
754    struct ITREE *root_expr;    struct ITREE *root_expr;
   int n_iter;  
755    int cr;    int cr;
756    
757    int xhash_loaded;    int xhash_loaded;
758    
759  #define N_TS 4  #define   LOOP_FACTOR  100000
760    struct  #define   UPDATE_INTERVAL   5   /* ステータス表示の最低間隔 */
761    {    struct status {
762          unsigned t;      time_t      startTime;      /* 開始時刻 */
763          int c;      time_t      lastTime;       /* 最後に表示した時刻 */
764    } ts[N_TS];      unsigned long       lastLoopCnt;    /* 最後に表示した時の検索数 */
765        unsigned long       loop;           /* ループ回数 % LOOP_FACTOR */
766        unsigned long       mloop;          /* ループ回数 / LOOP_FACTOR */
767      } status;
768    
769  #if 0  #if 0
770    if (argc < 2)    if (argc < 2)
# Line 846  main(int argc, char *argv[]) Line 833  main(int argc, char *argv[])
833    
834    setvbuf(ofp, NULL, _IONBF, BUFSIZ);   /* XXX MSVCRT では _IOLBF が期待通りに動作しない */    setvbuf(ofp, NULL, _IONBF, BUFSIZ);   /* XXX MSVCRT では _IOLBF が期待通りに動作しない */
835    
   for (i = 0; i < N_TS; i++)  
         ts[i].t = ts[i].c = 0;  
   
836    mincnt = 0x7FFFFFFF;    mincnt = 0x7FFFFFFF;
837    nblk_hit = nblk_total = 0;    nblk_hit = nblk_total = 0;
838    nap_hit = nap_total = 0;    nap_hit = nap_total = 0;
   n_iter = 0;  
839    cr = 0;    cr = 0;
840      status.startTime = status.lastTime = time( NULL );
841      status.lastLoopCnt = 0;
842      status.loop = 0;
843      status.mloop = 0;
844    /* 探索ループだぞっと */    /* 探索ループだぞっと */
845    for (;;)    for (;;)
846          {          {
# Line 964  main(int argc, char *argv[]) Line 951  main(int argc, char *argv[])
951                          }                          }
952                  }                  }
953    
954            if (++n_iter - ts[0].c >= 8192)            status.loop += N_ALU * ALU_BITS;
955              if ( status.loop >= LOOP_FACTOR )
956                  {                  {
957                    int t = usec();                    time_t curTime;
958                    if (ts[N_TS - 1].c)                    status.mloop += ( status.loop / LOOP_FACTOR );
959                      status.loop %= LOOP_FACTOR;
960                      curTime = time( NULL );
961                      if ( curTime >= (status.lastTime + (time_t)UPDATE_INTERVAL) )
962                          {                          {
963                            int a = (100 << N_STRIDE) * (n_iter - ts[N_TS - 1].c) / (t - ts[N_TS - 1].t);                            int a, b;
964                              unsigned long loopCnt, zoneCnt;
965                              loopCnt = status.mloop * LOOP_FACTOR + status.loop;
966                              zoneCnt = loopCnt - status.lastLoopCnt;
967                              a = loopCnt / (curTime - status.startTime);
968                              b = zoneCnt / (curTime - status.lastTime);
969  #if DEBUG>=1  #if DEBUG>=1
970                            fprintf(stderr,                            fprintf(stderr,
971                                            "%5d/%5d(%3d%%)",                                            "%5d/%5d(%3d%%)",
# Line 984  main(int argc, char *argv[]) Line 980  main(int argc, char *argv[])
980                                                  "  -----/-----(---%%)");                                                  "  -----/-----(---%%)");
981                            nap_hit = nap_total = 0;                            nap_hit = nap_total = 0;
982  #endif  #endif
983                            fprintf(stderr,                            fprintf( stderr,
984                                            "%8d.%03d(ktrips/sec)\r",                                  "%8d.%03dktrips/s [%8d.%03dktrips/s]\r",
985                                            a / 1000,                                  a / 1000, a % 1000,
986                                            a % 1000);                                  b / 1000, b % 1000 );
987                              status.lastTime = curTime;
988                              status.lastLoopCnt = loopCnt;
989                            cr++;                            cr++;
990                          }                          }
                   for (i = N_TS - 1; i >= 1; i--)  
                         ts[i] = ts[i - 1];  
                   ts[0].c = n_iter;  
                   ts[0].t = t;  
                   for (i = 1; i < N_TS; i++)  
                         if (ts[i].c)  
                           break;  
                         else  
                           ts[i] = ts[i - 1];  
991                  }                  }
992  #if 1  #if 1
993            if (!key_inc(3))            if (!key_inc(3))

Legend:
Removed from v.114  
changed lines
  Added in v.115

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26