|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如! L, `0 J7 X: L' E. X) A' a. o$ D; G
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
: ^; U8 v9 o, y% y% j6 s" Z$ m* ] * ======== main ========$ i8 O! h# T( P: W7 f) _- e
*/7 A: ?- M% G( Z% \. ~
int test;
) b/ {' l( M' C$ j( L! _8 A+ B) t1 zint *pda;
- ?7 c! ~! t' Slong long t1,t2,t3,t4,tover,tdelt1,tdelt2;7 [0 B& D8 V8 J" h' Z
Int main()) E( s; _. i5 ]# q
{! B: K( V2 Z: P0 T
TSCH=0;" X4 k0 i7 l. o1 i) H* ?
TSCL=0;* i! c# D% u; d8 e) W% Y7 s7 ?
pda = &test;
$ ~ U8 j3 U( t8 l t1 = _itoll (TSCH, TSCL);
9 ?. c0 r. e1 b- b& x9 t% m test = 20;
& g$ g' P/ p, X* l8 j# [ t2 = _itoll (TSCH, TSCL);: ], @& @4 q$ F; F, x
*pda = 30;2 T) V" D! @4 F6 t) ?; X+ ^! V
t3 = _itoll (TSCH, TSCL);& @3 z c$ | x' J& v H( }
tdelt1 = t2-t1;% t6 b! a" B. e! \# e: j+ v
tdelt2 = t3-t2;
3 w( o8 I0 {3 l return 0;* g& s+ W0 q4 A" s# Y% F
}
) i/ a6 \& G+ a0 O. i" R1 P2 S# R/ C6 W* m5 n+ D
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。! O5 K, g G; F: v: ?: w
有劳有劳。0 d) c6 i) J( j( {/ V' X* U7 r
|
|