|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如. K1 I. D" r7 Y1 S5 w" [7 M r3 x
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:6 j* D) E2 r- Q U2 S
* ======== main ========; s; e- d% L- J' ^7 t: G& k( S
*/2 G& L- Z, n6 x5 s0 W! B
int test;
" d6 o9 n# t W1 \int *pda;
9 J/ G3 P, d2 c) s" m; L; S) d% Dlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;- i# i$ }8 F7 Y. p& y5 V
Int main(). a( C, E, O! n3 t* `" {# e/ y/ W
{* B6 L% T+ h# M6 t
TSCH=0;
; g2 d# y0 _( ? TSCL=0;: ?2 v+ D6 j% Y8 D
pda = &test;1 {; o) F; \+ z c. @& E- C
t1 = _itoll (TSCH, TSCL);. N4 Y- y G) K1 C* W7 ^( [: j
test = 20;) G, L3 Q6 z5 o0 u
t2 = _itoll (TSCH, TSCL);) w3 D0 \# k! i6 ?) I5 b- g
*pda = 30;( |3 A+ q! @. R" y% `/ \
t3 = _itoll (TSCH, TSCL);/ P, I3 ^, T5 E! x5 I& q
tdelt1 = t2-t1;6 d# R; O/ h2 l/ `8 c
tdelt2 = t3-t2;
9 ?9 m" W# i" R L return 0;7 q7 Q+ p. G. K5 I* K) B" A: e
}+ U# J. N+ {# ~. \ e/ z
! L3 D8 o- t* ?7 z G就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
* t9 J' w* @! W& F# w; C' U有劳有劳。 J* t/ |, h9 }/ N4 M
|
|