上に戻る
1 /************************************************************************/
2 /******* 2章. register char counterは遅い *********/
3 /******* *********/
4 /******* 初版 NEC通信システム *********/
5 /************************************************************************/
6 #include "common.h"
7 /*------------------------------------------*/
8 /* 2.1 処理速度が遅過ぎる memset */
9 /*------------------------------------------*/
10 static void tooSlowMemset(
11 register char *s,
12 register char c,
13 register char n)
14 {
15 register char counter ;
16 for(counter = 0 ; counter < n ; counter = counter + 1) {
17 s[counter] = c ;
18 }
19 }
上に戻る
20 /*------------------------------------------*/
21 /* 2.2 伝統職人が好んだ, memset */
22 /*------------------------------------------*/
23 static void traditionalMemset(char *s,int c,int n)
24 {
25 while(n--) {
26 *s++ = c ;
27 }
28 }
上に戻る
29 /*------------------------------------------*/
30 /* 2.3 普通の人が書く memset */
31 /*------------------------------------------*/
32 static void normalMemset(char *s,int c,int n)
33 {
34 int i ;
35 for(i = 0 ; i < n ; i++) {
36 s[i] = c ;
37 }
38 }
上に戻る
39 /*----------------------------------------------*/
40 /* 処理時間計測 */
41 /*----------------------------------------------*/
42 char buf[64] ;
43 void slowChar(void) {
44 #define LOOP 0x7ffFF
45 #define START() (msec1 = msec_now())
46 #define END(MES) printf(MES ,msec_now()-msec1)
47 long msec1,i ;
48 START();
49 for(i=0;i<LOOP;i++){ tooSlowMemset (buf,0,sizeof(buf));}
50 END( "処理速度が遅過ぎる %u msec¥n") ;
51 START() ;
52 for(i=0;i<LOOP;i++){ traditionalMemset (buf,0,sizeof(buf));}
53 END( "伝統職人の処理時間 %u msec¥n");
54 START() ;
55 for(i=0;i<LOOP;i++){ normalMemset (buf,0,sizeof(buf));}
56 END( "普通の人の処理時間 %u msec¥n") ;
57 START() ;
58 for(i=0;i<LOOP;i++){ memset (buf,0,sizeof(buf));}
59 END( "標準関数の処理時間 %u msec¥n") ;
60 }
上に戻る