|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
5 R* f5 }4 z& P3 o S*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
# }3 a4 N/ w% l) k. Y * ======== main ========- s7 a1 D! Z' M# [$ ?
*/
% r3 V$ c9 M% N9 m5 B* V" Rint test;8 n9 v% `/ \0 C
int *pda;
; J* b. C: ^; along long t1,t2,t3,t4,tover,tdelt1,tdelt2;; y' h" b& [9 c
Int main()( f$ [) [' k0 G; ?9 u: @' I# d* H: N
{( {$ S( M7 D% G% y; C8 ^! o# e+ u
TSCH=0;
( _' q$ M/ j% M2 V TSCL=0;
& m- e+ ^7 `/ u& M! _ k/ N" K/ E! k pda = &test;9 Y9 {; n. p3 a: X9 G
t1 = _itoll (TSCH, TSCL);
$ I& u2 C7 a" G8 k2 B' W0 ` test = 20;- x0 Z" _" t/ P
t2 = _itoll (TSCH, TSCL);9 |8 D) P' o5 n+ g1 H. l" x
*pda = 30;
. f$ n9 t5 S8 y6 @ t3 = _itoll (TSCH, TSCL);
3 u6 ^: q ^% T. J tdelt1 = t2-t1;
5 m8 ^4 _4 y% z0 ~: R! z tdelt2 = t3-t2;
& p# {' ^+ Y: }, ? return 0;: Z' b1 u$ A2 b
}
0 } `9 b! S0 C, [& ~) W8 i4 q! I
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。: T2 P( X+ O }+ |: l
有劳有劳。; e3 h# m1 x# W5 G+ O0 b' s
|
|