|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
/ d: X) }7 M4 G' v*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:+ m2 V' [" c8 A& |5 p
* ======== main ========
9 _0 T: a3 ]% j */
9 ~( R1 y' [! nint test;
9 G; _! ]* u, J0 D( nint *pda;
8 ~7 N$ D; x. z* j; }long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
K. i8 E6 a+ l$ _ k6 c. TInt main()
) c% R9 i) f8 H& m4 D$ ^{' ?8 g) U9 a$ ~6 S X( h4 ~5 V1 g
TSCH=0;
$ O; J/ C/ w; ^2 f9 G$ g& j/ X& _ TSCL=0; x- X6 j7 O5 e! P2 K( L
pda = &test;( B5 o1 } Y' A4 ]# z" |
t1 = _itoll (TSCH, TSCL);
7 N" L+ B7 d) g; t% S( I+ J test = 20;8 P6 g4 b! x) o6 ~; n( \* Y- {
t2 = _itoll (TSCH, TSCL);9 q3 N6 \6 o( A- U1 s7 _1 N
*pda = 30;0 S8 J# J/ | @7 L& Q
t3 = _itoll (TSCH, TSCL);( O3 V: G1 M( T, _* ]5 e" Q+ X
tdelt1 = t2-t1;. F4 L B7 P: x+ ^6 n. h8 ^/ b* q
tdelt2 = t3-t2;
+ ^3 S: S9 G- z return 0;! B: X$ `1 e( [5 h: _7 x
}
) R. d& A1 r) R1 a& v9 o S: r$ S; ?6 ?, b6 ~
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。# i/ Z3 l7 `2 r* M# E
有劳有劳。
9 K3 _# p; G# E' { |
|