看板 PttCurrent 關於我們 聯絡資訊
※ 引述《in2 (聖誕玉兔 *^^*)》之銘言: : 理論上尖鋒時段每秒可以少掉上萬個 system call , : 不過不知道有沒有幫助就是了 ;p : 晚上看看 ;p 原本程式的作法是, 使用者每按一個鍵, 就會透過 time(3)去拿一次當前的時間, 而 time(3)的作法是 (from /usr/lib/lib/libc/gen/time.c in FreeBSD 5.0-release) #include <sys/types.h> #include <sys/time.h> time_t time(t) time_t *t; { struct timeval tt; if (gettimeofday(&tt, (struct timezone *)0) < 0) return(-1); if (t) *t = tt.tv_sec; return(tt.tv_sec); } 其中使用了 gettimeofday(2) 目前的作法是, 在 pttbbs.conf 中定義 OUTTA_TIMER 的話, 會由一隻 daemon (目前暫時寫在 shmctl utmpsortd 內) 定期取得當前時間, 寫到 SHM->GV2.e.now 中, 而每個 mbbsd只去取 SHM->GV2.e.now , 不直接跑 time(0) 以上萬個人, 每個人一秒鐘按一個鍵的話 (而通常每個人一秒鐘不只按一個鍵) 如此的作法可以每秒省下數萬個 gettimeofday(2) 不過就目前看起來似乎對整個系統沒有太大的幫助 ;x -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 140.112.30.143