|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
7 h( }( u# _ @" J5 }*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
* l# ^# b5 Q7 i6 Q ?% T * ======== main ========. n! E* x G/ b! y8 `0 t7 f
*/
; k9 w3 S3 l% k9 D' \! |$ [- r" q) iint test;
' h( r/ t' k) p& x# d/ ?+ fint *pda;3 i+ a0 t/ j6 u+ t7 m
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;5 k* J5 E$ f$ m+ S5 l) v
Int main()
' m* h7 d' @8 {) j. K{
: O2 k8 ]$ d: C' y+ W TSCH=0;; Z2 B3 \7 F$ z6 T0 i! ^7 i
TSCL=0;
N. p# u( Y- H0 i* L7 c2 ^ pda = &test;
3 P% {' }" v* k t1 = _itoll (TSCH, TSCL);
8 H# r- X3 j( u: f! i5 @: E4 E test = 20;
" F, `6 l. }' y t2 = _itoll (TSCH, TSCL);! S0 r" C1 ~. k/ i5 b% T4 N; t
*pda = 30;+ K% d9 o+ \! v7 r) z- `
t3 = _itoll (TSCH, TSCL);
0 `; a+ e1 E- P, S+ U tdelt1 = t2-t1;' ]+ ]4 V' n8 b
tdelt2 = t3-t2;& Z+ n U6 ?4 r" z/ Q7 `
return 0;
! ~5 k9 m9 |1 q) o6 G- T* F}
$ F! j _; R$ q3 d1 O8 n: r. G1 I1 Z* F; Q% J. t/ C( V$ T8 c
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
7 a, r3 X3 j$ F/ g0 `" G# B* x7 s) G有劳有劳。 b7 h) _& k0 N
|
|