|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
; B5 q& c, Z+ m*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
6 a8 i- X8 v8 l2 Q * ======== main ========
- l- ]. e% k9 U; i+ Q" { */6 G( _! t3 z; x3 S+ i! L% r9 x3 b
int test;
* W7 r4 ~/ X& V- |+ aint *pda;
l) s1 o( `/ M/ G) Slong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
+ L5 ^9 ?5 E4 F8 ]; nInt main()
( N5 C" A/ Z" P: m0 w1 c8 }* k{) s7 W2 b. l: n# B- a2 n- u3 e
TSCH=0;3 a3 p' s& k! S( J/ h
TSCL=0;
& H% y* i- P6 s' P1 a( s3 X pda = &test;6 I; T, f3 t$ x& d% i% \+ k% x0 Y
t1 = _itoll (TSCH, TSCL);
. \% i V7 Y' y+ q8 s7 r; `! g3 H test = 20;
# y7 [ r; g/ u" {. n2 y9 k t2 = _itoll (TSCH, TSCL);
! R, ~2 l: {5 z5 ^6 k- F *pda = 30;% ^: e; ]2 z# E' T+ T6 D3 d
t3 = _itoll (TSCH, TSCL);; k) i+ Q2 j) t
tdelt1 = t2-t1;
+ n: b6 N6 \" v- m" x, T tdelt2 = t3-t2;
7 W j) n4 [9 H return 0;
: `5 N: x2 D: N( \7 ?}# W" r0 O" h, V" |9 p9 ^9 U9 j
2 o$ \( p- |9 w( F4 P) O+ \就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
! y* ?/ v7 d# M. p& A有劳有劳。% c L3 L6 O4 S* p& O
|
|