|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
- y2 S, l" F8 x( J: r ^5 E; t: ^*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:+ F/ Z8 d/ ~5 T9 V# }# q0 h6 \
* ======== main ========
d; l% ]- O h$ D0 |7 n. B */
. C% [& B. Y6 ?% j/ Gint test;
' ]8 Z! z, V3 v- r2 [5 f8 A' eint *pda;
1 S! t) F4 _0 e* U: s, vlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;0 y% I ]! {$ L/ e$ M
Int main()
* Q9 O( ~! G* U7 B0 T{) N4 u- Z# z7 u9 t9 u
TSCH=0;/ j+ X. ~# V1 o! B& k5 @; X
TSCL=0;
2 _1 Z7 C$ x: s& i8 n9 E pda = &test;% K$ G- j+ n/ q) c/ K9 ?. H! s; j
t1 = _itoll (TSCH, TSCL);
) y; ?1 ]9 k9 K3 x* \ test = 20;
9 D* F. P7 I) O1 J6 }, s) u t2 = _itoll (TSCH, TSCL);
# m; s( u& z# M( m4 [: ?# A *pda = 30;) P5 S( d0 x R! s1 X# M3 h8 J- }. K
t3 = _itoll (TSCH, TSCL);
5 V8 G( B0 J0 p tdelt1 = t2-t1;
/ S( c6 T+ | a9 Q tdelt2 = t3-t2;* w; ]2 N( \* C. [
return 0;& l( `0 k( O1 @* g2 X1 R# p
}
/ E4 i' {% y! |, M) M3 l M' l% @/ `1 {4 ?
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
0 K: m" R! U( a3 C/ s V# t有劳有劳。
+ [ M9 `# s; E% R3 H" M, G |
|