|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如! G! g% r5 t( ?0 m
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
. u/ c% t! G2 |& r8 `! M * ======== main ========5 U2 G3 E- k. L7 f P
*/& ~9 m- q9 q0 a# ]: x+ r
int test;
; M4 p9 c M1 W! aint *pda;
+ G0 N5 B7 J' i5 e' o7 }# q4 Wlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;: k( F% M6 O' L/ u& K
Int main()
/ d+ B+ l! Q( w* J{9 Y" N* Z! j+ E& t
TSCH=0;
8 {' T1 |( ?8 v) u; Z/ t) w: Z. n TSCL=0;
2 w9 a; d- z" N' ~. n/ J pda = &test;3 ^( x1 h; v$ A* d
t1 = _itoll (TSCH, TSCL);
9 }& P* @8 N1 _$ p0 d test = 20;/ y" p& o5 T. y' k
t2 = _itoll (TSCH, TSCL);9 i' T9 h5 r- x( e9 h6 [9 S
*pda = 30;! J; i' ^ K9 i
t3 = _itoll (TSCH, TSCL);7 D) S& k( x4 c0 q6 X
tdelt1 = t2-t1;" g) u9 k- b9 o# [( r+ h
tdelt2 = t3-t2;
+ z" g1 ?9 d u return 0;
) x+ h$ Q! v1 x}
, `: M# I) l% @: f- |; l0 Z
* V6 Q0 O4 s$ B+ U1 Z3 O就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
' I( E7 \! L9 r/ l O有劳有劳。
9 |- L" r& k5 L( N |
|