|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如) G W: ] p% A8 V
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:( i( { y( c9 W0 t
* ======== main ========
0 P$ a3 d( Y- z% z; B' d, ^ */0 q' ]+ [; {3 _5 u' f3 N
int test;
0 X0 k9 A9 L8 gint *pda;
# r2 O- e5 p5 P: Mlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;/ h K& q& L/ {( i! o* q# X4 J
Int main()
0 F# ]+ q* `% d" b4 \; P9 l/ ?{. A0 x0 B& Y( S+ M
TSCH=0;
3 L, i# C, Q+ b& M3 O) t2 l/ I5 G TSCL=0;' j% \! {4 D' o$ i% N/ d
pda = &test;: X X( k7 O e8 ^+ Y! S
t1 = _itoll (TSCH, TSCL);1 C x2 H! f6 l5 v4 E
test = 20;- ]2 a1 p e3 r$ W: Y* b' |
t2 = _itoll (TSCH, TSCL);
# t/ d! x% M9 z* {5 v *pda = 30;
$ h0 t4 x" |. F8 W t3 = _itoll (TSCH, TSCL);
& g9 Y; o G! | tdelt1 = t2-t1;% ~ C7 A5 K% o2 W" K1 ^
tdelt2 = t3-t2;
: M, K2 _# i9 Q! b1 Y return 0;
. x6 b% |& e" u1 j$ C/ {, Z) ^}
8 \, H* `0 L2 a& b( I4 ?7 D" R5 T6 o2 V b
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
$ D' n _( z( z$ M/ G$ O5 p有劳有劳。) R0 X. f$ m5 f, S
|
|