|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
; m, M) w7 W. N/ M*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:8 s) W" ~, A1 X; ]
* ======== main ========
G0 A+ K; p& b% W' z3 S */
) [ C5 {( L D& N: Pint test;, A6 N" h9 _/ w2 C! W0 W
int *pda;
, h. k' ?1 @5 G. _5 ~4 Zlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;$ F- K X7 n2 O7 k7 D2 i
Int main()- _5 N+ n: h7 N( U* V$ |' a
{
6 u3 e$ q4 ~0 {, p. k TSCH=0;! S, u+ u2 N/ L; w* n
TSCL=0;$ H* {1 L, c: J* @# D8 o# X
pda = &test;' C& h( b3 p2 H5 l. ]2 _
t1 = _itoll (TSCH, TSCL);
) e/ h0 o2 G# K6 I8 J& m test = 20;
" i+ p3 T- N& u; d" n, {0 \ I t2 = _itoll (TSCH, TSCL);2 ~, _7 e7 m1 x3 O ~2 p
*pda = 30;
; m- y6 H% F5 E: g" c: _! K5 P t3 = _itoll (TSCH, TSCL);
- ^# b0 H& k" e/ g9 u tdelt1 = t2-t1;
3 S) g8 a2 W) M! Q. D% S tdelt2 = t3-t2;
) M/ x% b$ V0 I$ @6 Y: q return 0;1 c$ b9 W- ^ P$ c9 w5 W
}% h- V* K& Q: [) V/ n/ O/ ~/ |4 v
1 }: U: R$ S2 f- v& ~& ]* K
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
( ]4 k( j/ ~& ]有劳有劳。+ J' u& }( K' Z0 b+ T# k
|
|