|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如2 }7 ?1 a1 L% [0 U; E- D5 S" r
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
2 {1 A% y- ~! P- i * ======== main ========
( m0 b% f; {7 A! _7 k* `/ [ */! U3 p2 |* y/ j
int test;
4 p) u3 Q# C! g7 u% rint *pda;
- \ W8 g1 Z9 E+ g' y/ `0 olong long t1,t2,t3,t4,tover,tdelt1,tdelt2;; B. [7 [8 E) [) n# d" q1 m
Int main(). j a+ M% b8 ^1 ?
{
5 o4 F5 k& B) U' f- s: e TSCH=0;0 u0 z$ z9 B0 [5 G
TSCL=0;
0 e2 _1 k" ?9 ]& ?' e% @ pda = &test;5 I; x/ g7 V" L d
t1 = _itoll (TSCH, TSCL);
$ E9 U; T2 ]2 |. X test = 20;
+ P2 m& j! O' S: h" H+ Y4 T$ r# p) I t2 = _itoll (TSCH, TSCL);0 q% E& A/ F3 }7 P( [
*pda = 30;
3 b- ~# p) y$ T5 M( J t3 = _itoll (TSCH, TSCL);
6 k: M w! ?4 @% F" F- f tdelt1 = t2-t1;1 N/ ~: R$ c# w
tdelt2 = t3-t2;
2 V% ~* c* ?" V1 w' w6 c return 0;) A% D- O6 h) F+ O, n2 S
}
0 U( i5 @3 }9 a4 }, }+ J$ d4 d r, l# Y- m' ]& L3 f
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。* ^' S. p* r; d
有劳有劳。 Z1 U8 I: G c( |; S( T
|
|