|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如: Y& Z; }9 P, `
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
5 S4 b5 H' l9 `- i4 u * ======== main ========
5 `' h) D0 h) p- H5 ~ */
+ u' l9 ?/ _+ [- w+ m. ^int test;3 S$ ?" Y* E+ u( M: o
int *pda;
9 F5 k6 }# A6 ^4 blong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
% Z. Q2 R; F# A& h) l/ mInt main()
1 K* D q% |* Z1 j$ H{
$ d c& Y5 V$ Z TSCH=0;: v4 @+ E6 {9 N4 P; N* ]
TSCL=0;
0 f R0 X. U }% z pda = &test;3 j w1 ]% G; ?& K5 [/ y, @. I. q; `- {
t1 = _itoll (TSCH, TSCL);/ W0 R/ W G/ N1 J. Q" C7 d7 U
test = 20;
" B7 k: o, i& C& k. c+ m; s t2 = _itoll (TSCH, TSCL);
" I1 k G0 j6 B, j$ _) o *pda = 30;! T; s# B3 g& m5 ~2 `" c1 U
t3 = _itoll (TSCH, TSCL);
- v" m8 l, b0 t& Q tdelt1 = t2-t1;
@9 I' G. n$ Z* I# F4 e: H- Z tdelt2 = t3-t2;: E9 y; v* ?8 J5 l% d8 e2 g* \
return 0;4 E2 @( W* \8 }" v- x5 u
}
' A: ^6 ^0 E, Y5 ]3 |- h; M5 S' t/ c0 d4 I$ n9 G4 b6 Q
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。) T! {( _! h @0 \' |) R! i) F
有劳有劳。
; @6 o" x& u" q |
|