|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
5 h# x$ S' @0 h$ s5 z# ]*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
! h( _0 b. y8 @4 I) G# M/ _" F- Z$ U/ Q * ======== main ========) ~* |/ V8 C3 M3 |8 u
*/
* ~) w4 a7 A1 gint test;
. Y. B4 v0 t# Lint *pda;
' H5 Z8 k7 N5 g2 R% n- k' _+ c% ~long long t1,t2,t3,t4,tover,tdelt1,tdelt2;& |3 K: a0 H& x2 [2 |! K
Int main()+ ?8 M, [/ ~* O5 f
{
. T3 c- g0 C+ a! G! ~) } TSCH=0;
: ?! R( S1 {4 o: a( H: P, e) e TSCL=0;, Z8 O5 t3 O7 f" e
pda = &test;4 W; T8 ?) |* C
t1 = _itoll (TSCH, TSCL);4 L5 h) F7 C, B) R& d& w
test = 20;
& R$ Z+ G" r8 u! g" Z0 [6 j t2 = _itoll (TSCH, TSCL);4 c. m+ a! r* k2 o( y
*pda = 30;) y ^/ k r0 F$ _1 l
t3 = _itoll (TSCH, TSCL);
+ y8 W. K( w$ h tdelt1 = t2-t1;7 |3 F5 P* H ^
tdelt2 = t3-t2;0 F J! _0 I$ j: J1 X
return 0;
( l t# c9 A0 u' S6 } L}
M4 V# x0 D7 u# L) E2 n; W5 _8 H. ]) }* l% E f: U
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
+ s. w- t3 ^! v# _# w有劳有劳。/ B2 f' D. a5 z$ q
|
|