|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
! L2 s Q! X/ U8 _. K, \! l*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
, m1 n$ U: l. P: e% f* c% k * ======== main ========; W. {+ |- X2 T# z( U! C
*/
% t& l H/ `" ~7 ^int test;
/ e6 f2 N. t" bint *pda;
8 i2 ?( H" R' R9 G( g9 S7 Q. ]long long t1,t2,t3,t4,tover,tdelt1,tdelt2; |0 w1 p+ l0 a( h. F- S3 u$ k
Int main()
) e+ E+ f/ ~0 z8 R6 _{) t7 {) d; j4 S% {
TSCH=0;; j! H* ^5 B, \" j( u3 D4 m$ r* t
TSCL=0;
. e& D. G; G2 u, u pda = &test;
0 d3 |9 i+ o) `& M# J7 k& F t1 = _itoll (TSCH, TSCL);# P% }; a! |7 @) ^6 r- u, y$ @
test = 20;' q8 t' p3 Y( W8 i5 R
t2 = _itoll (TSCH, TSCL);
6 q) k$ e+ W0 }; j *pda = 30;1 a! _0 A6 C6 m1 a1 m
t3 = _itoll (TSCH, TSCL);8 l3 _8 D% H: Y! h1 }% r
tdelt1 = t2-t1;7 e+ u0 d/ n8 R' q
tdelt2 = t3-t2; {: X, d5 \ {4 b( K+ Z
return 0;
% Z8 J' `0 D$ {}
) q9 i4 V2 V: y n9 k3 C% `6 b
6 K; x: v* {) I N& w# M) G就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
. P$ ?. y, [/ q; `; |有劳有劳。
+ a- k6 D& @. y3 u8 h2 i |
|