|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如' q y; f: b% `. F
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:7 N. ^! {6 X- Y
* ======== main ========
, }/ D' S" F# ?5 T) K h( W2 U */" p% \( t8 k8 }
int test;
+ O1 g w8 \9 \$ \' h$ d8 Gint *pda;( ~/ g1 H3 M4 m: R5 W6 q, a
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
- f6 i N* e, JInt main(); ?6 O* c) a% h
{5 J ]. R3 K$ R |; T5 _5 i
TSCH=0;
) s: l( b9 S5 U, }2 x/ g TSCL=0;
- N5 b- }/ _, N6 F8 u pda = &test;' T% F l1 }1 `
t1 = _itoll (TSCH, TSCL);* V( ?- g( b n# A- K
test = 20;2 X F- U/ J- @# X. J9 z/ U# Z. _# R
t2 = _itoll (TSCH, TSCL);
% E/ q" p7 C6 `9 v0 c: x *pda = 30;4 w# {. v, M; Z8 g
t3 = _itoll (TSCH, TSCL);
0 x/ W) F6 F+ n6 n# B# ] tdelt1 = t2-t1;- @. E. N- v4 Y) C" {* {5 a
tdelt2 = t3-t2;. y. [3 {( o" ?
return 0;; Y/ H& }- @* \+ {
}
% F% ]- r% f% I/ i0 N+ \' c% l1 {
- e. J+ H* H6 D0 ~ G就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。& _7 r. ^* V1 r: C T2 j
有劳有劳。
9 y% j$ W( q1 ~. a |
|