|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 i( `" ? E; Y
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:# u; k% M' W0 f, o* u3 x6 ~! D
* ======== main ========
. V/ H; r+ s E3 Z; e" ` */
$ [6 b7 {3 `; D/ z2 n: `* s1 Rint test;* q6 d. k J9 G8 y' ^
int *pda;
0 c9 [* C: X/ Vlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
& N" _: V1 K6 FInt main()
; m2 v) d" w6 U& Q{) l" V' c6 u1 Q: Y: j
TSCH=0;' [4 i5 _0 B) ^% J- I0 L* S; _
TSCL=0;' Y( |; Q7 O2 Y( s* V, B
pda = &test; O$ w4 Z1 C% Z8 k7 p; `
t1 = _itoll (TSCH, TSCL);5 v$ B" q& m) j
test = 20;
' I' v: T/ i2 \ A2 g, c% V t2 = _itoll (TSCH, TSCL);
7 H& g% r. I0 {4 T1 ]1 A0 } *pda = 30;+ U0 O& H" ~" p: m) {6 e5 W
t3 = _itoll (TSCH, TSCL);$ e O7 q! q" a" n V
tdelt1 = t2-t1;' C: F6 ~ d7 t9 Z: X9 ?0 ?: _ F
tdelt2 = t3-t2;0 J- {3 \" E9 B! x
return 0;8 w/ J$ @- s. ^
}
: D1 Q2 y3 r' y9 V
$ Z9 J+ ?, ~! `2 f: c& |就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
3 i0 K: C c& @& P9 H) \有劳有劳。% J; x; k* F7 ~) ^; v' t2 x$ ~
|
|