|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
4 L' V' a3 F V6 ~& H P7 t*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
- l" o j ^( j% J; k+ a' @* ` * ======== main ========% g' m* C+ J2 O& l; Q9 u1 f9 x& u, s
*/1 k+ @! |" g! t i- R+ }! m f
int test;
! E* g K" d1 _# G0 V8 Dint *pda;
8 {$ S$ e* v5 W# t9 c+ n3 P% j2 flong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
* x/ `9 {! i( y i) ~5 pInt main()
& d T5 B1 y* |* R1 U5 |0 Z/ J" R4 ]{# s2 T( @* u0 l7 o C/ m' H/ }
TSCH=0;
/ W; e4 K0 ^5 Y" R m/ l TSCL=0;$ K! ?* x. [; w1 ^! G( l1 P
pda = &test;" U% h2 t& Q0 q
t1 = _itoll (TSCH, TSCL);- r& D. E8 g& b
test = 20;! W" F! z9 r2 W
t2 = _itoll (TSCH, TSCL);
6 e; `, Q( `: n *pda = 30;+ B- i6 q R( z1 c- S- t
t3 = _itoll (TSCH, TSCL);
/ x( f" ^2 {$ a' I r tdelt1 = t2-t1;
* [; }7 x7 r: N1 o5 l tdelt2 = t3-t2;
) B/ t* p2 J- f* B return 0;
4 u, O. v$ x' m& T2 i} X6 x3 C" l% P5 u2 X& x: t
% L7 X% \* E) C. J% L( W) x% V
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。6 q0 i* k" S8 R0 r/ J6 ]
有劳有劳。$ }* G# p" A; M
|
|