|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如" T3 |: ]' v) |, |! I8 j9 p8 T
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:& c' q& u( f2 e; V
* ======== main ========
5 D4 L. y" e/ P5 ^! s, {/ V */" L" f% e) i1 s" B7 p
int test;
4 i/ _ H' V2 p, |, x* H vint *pda;
* f& h, o3 I3 s5 Rlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
. K+ j+ w/ c7 @' u& ~/ D! T# ]6 AInt main()
; o: T+ W: ^2 F& @' i9 Q{
" m- B. V4 H- Z TSCH=0;* l& }% f6 F6 a( M J" o( A7 P
TSCL=0;
) ~; }+ w4 v$ X' ?& G pda = &test;
& l: \ a6 y' F5 p# Z y8 {. C t1 = _itoll (TSCH, TSCL);& A B7 b8 d' ~, Q) w
test = 20;
8 R! N* n% q* C$ r/ z, U t2 = _itoll (TSCH, TSCL);
& c% ]! @+ v' I5 m! ?& { *pda = 30;
2 Z; R& l/ i* d$ S a t3 = _itoll (TSCH, TSCL);
$ D6 r$ j$ b% B) L& [ tdelt1 = t2-t1;2 t9 T' \+ p3 ~! V) [
tdelt2 = t3-t2;% W7 \* n- C0 D8 t# N N- ?. u
return 0;
3 K, r! o2 V! r! @, {}
- s# H; P* p5 c( T% D5 T) ? D1 R3 _% v
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。0 b, n# v" V7 s9 a; U3 j+ b
有劳有劳。
2 T& Z. |# z6 `0 o0 m |
|