|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 {+ H$ r" M% E; U7 f1 p
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:8 R+ B$ f" Q* V0 C7 |8 Z) j
* ======== main ========( k6 P# n! s3 l2 n
*/
0 G- M% [2 n# L. k7 }int test;% n5 k7 e5 M) |1 I$ A
int *pda;
# U- w+ U- v/ S' j$ T1 y& Tlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
3 e1 X- s) y! e9 ?3 r0 r6 GInt main()
7 U V! {$ h% X" X% P0 G{' Q" r& Y- o1 G6 d* V5 @
TSCH=0;/ J) E' u9 S& k; h
TSCL=0;: \: k3 A' A! z" w% r
pda = &test;7 L3 F6 L4 u! Y, ?( U
t1 = _itoll (TSCH, TSCL);7 k* y0 P3 z5 r. ~9 C+ O
test = 20;
) }4 r- B7 ~0 U" X6 x- B t2 = _itoll (TSCH, TSCL);
4 l3 m8 k# G: J) C5 A *pda = 30;0 q/ F8 g% {' C: e9 q0 U/ Z
t3 = _itoll (TSCH, TSCL);2 h0 ]4 w7 ]) q& m4 e3 F1 m& s
tdelt1 = t2-t1;2 [! f; F& w1 W
tdelt2 = t3-t2;+ s6 V0 H' q( U ]" D) P f
return 0;, z+ |" Z6 d0 ]4 y: {; p& D
}
1 m" C; ^) ^% u4 Y x; o! H6 z1 x; I5 q* s1 _
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
! I f% @6 C, Q; X# v! z4 b1 a有劳有劳。
* L7 e- {9 [; _. t. ^: H" ^ r! t6 h |
|