|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 a. h" F$ z1 s6 t' |8 j! `
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
3 V5 E. B. @9 j) Q* r) o- B * ======== main ========
/ r" D& N. p% b3 Q2 u8 Y, j */8 Z$ [+ t/ X( c2 v& m8 y
int test;
: i2 K) L; |% R/ yint *pda;+ j5 z! I( t( g7 Z: w6 ?2 f
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
t: ^- y" P; ?Int main()) X9 i0 _, \6 \4 h
{6 _! i* c# m2 R5 x, e7 @
TSCH=0;
6 z w5 \9 w1 G0 T8 D5 ], B TSCL=0;4 l6 T, W$ y, T; M
pda = &test;8 m! [7 c0 X( X& S
t1 = _itoll (TSCH, TSCL);
: O5 s+ Q. v1 z test = 20;- m, b4 ?8 R: y0 W; p& S7 x" s" b
t2 = _itoll (TSCH, TSCL);
6 u1 {( Y& O$ @5 Q7 p0 D2 ~& [ *pda = 30;
9 z; p- w% G& f0 e t3 = _itoll (TSCH, TSCL);
: W! Y5 R! ]0 ?/ m tdelt1 = t2-t1;8 ` C8 p* D0 _6 c8 @! @% l
tdelt2 = t3-t2;
5 x; Y' R, U( p1 h7 K4 Q return 0;
% v* s: X. Q0 t% ~. b# g% q% N8 @}
# E+ H8 P7 S0 |
& {- k3 x, e% l- G; [6 M就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
0 ~0 A8 `, d2 c( _9 Z有劳有劳。6 r) X3 T( V' V& s' d
|
|