|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
0 J' E) ]. m: M) H0 A4 C) ]*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:2 v( L: S2 c- A6 U
* ======== main ========
. y1 H2 u: O7 U$ ]( y! }, ^+ C */
3 V0 q& t9 N* J5 { Kint test;' {- a: i* c* W5 Z( F
int *pda;
3 _1 k7 r& T2 u- m1 ? blong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
5 P' P3 ]: n" R5 `Int main()3 f9 G9 b4 F9 k4 Y: x: c
{+ {; `. u9 B9 B
TSCH=0;
" i* q6 B" x" A( F. U TSCL=0;7 J, P( |% t1 `/ B& H2 U4 l1 I
pda = &test;
$ |# g* ?/ k: N: H) q0 P. |: e( C t1 = _itoll (TSCH, TSCL);6 S$ F% A. z# B9 s u4 C
test = 20;
1 v3 }% c( B9 g- y- ? t2 = _itoll (TSCH, TSCL);
2 z* J; f8 f0 f2 Y d' v *pda = 30;
; }0 f7 s; |: ^+ a, V9 ?( [ t3 = _itoll (TSCH, TSCL);4 V0 L. S8 ~9 E" `- Z
tdelt1 = t2-t1;
% {: ~( w4 x( u" V, O# m, J tdelt2 = t3-t2;
/ K1 M# u6 s! j return 0;
+ D' t6 j8 X, w6 L}
3 m2 i! V* a2 M$ k9 S( Y
+ o. }( o% R5 S4 ~; |就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
- B" J& w- b! S& D0 R- `% d! U有劳有劳。8 W7 e" ~7 t- R( N2 v
|
|