|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如' d8 q- v ~4 d u2 l/ s
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
+ h; a( g9 N U" P6 G7 c. N" H# G! X' S * ======== main ========5 S% K- V5 n0 ^1 Y
*/: r9 J3 {0 @ l0 }
int test;. W( h' v6 G& _
int *pda;* i2 e8 Z& ^2 p; k9 k) K" ^
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;) v; y7 S! Q' W ]
Int main()
5 m4 ]2 W8 J% L; N/ O t3 `4 V% S{) ]. w9 B) E; p# i7 a- B
TSCH=0;
+ t! k$ u; H! ^ TSCL=0;; A/ i$ o& [. ^8 P6 e. L
pda = &test;$ G2 H7 M/ N ~/ \
t1 = _itoll (TSCH, TSCL);
1 d* l1 B& i6 W' p- {4 e test = 20;0 ~( X% L& N! D2 i" K9 ?
t2 = _itoll (TSCH, TSCL);1 S5 e6 \4 w4 ?- ~+ `+ K. a
*pda = 30;# z! |4 \& _/ U5 g. S
t3 = _itoll (TSCH, TSCL);
0 S+ g8 ]8 c1 w6 n3 J/ k9 d tdelt1 = t2-t1;1 u. k8 R% o: A. Z. x7 C
tdelt2 = t3-t2;* J( N( J8 U+ ^: z7 ^% L5 [
return 0;) M, p/ k n7 e* z
}
6 g5 L5 m# D" l8 h) y3 {0 z) S. A0 o/ Z4 f1 J# l9 H/ X
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
/ X3 i; X, D; M* ~有劳有劳。
) b( U2 V2 _0 ?8 u7 D4 I7 K1 V |
|