|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 K% Z' \; d$ T! e
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:9 i3 |" B, h! W7 u+ O+ M
* ======== main ========
$ t& W4 z, ^: ~/ Q5 [3 D */ k, ^0 O9 [0 ?! l' `# Y
int test;
* @ t; f* i( m: i5 H/ Fint *pda;
{. {# X" J( C5 `1 r1 `long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
" {1 h0 k9 h" K- `Int main()
/ U: v5 _5 f1 e3 m' P" q" V& i" C{
* \, x& f! g6 r TSCH=0;4 g, k+ x O5 G# N& c
TSCL=0;
, F, _9 D* Z+ T( u4 U pda = &test;
3 a8 Y% r5 P3 Z( j t1 = _itoll (TSCH, TSCL);+ z& x- }, `: a
test = 20;
" E% A0 _/ Q& u7 c3 g2 x* X, A$ V t2 = _itoll (TSCH, TSCL);$ K* f' J( y! T2 s/ H3 m
*pda = 30;$ `, S: z& I H1 ~
t3 = _itoll (TSCH, TSCL);
4 |4 w: u" {( t0 d' Y% K tdelt1 = t2-t1;
d0 u; V* `$ m8 c" z1 ` tdelt2 = t3-t2;3 p2 b. M5 O8 o$ d; j) Q- w4 g; }' x" ~
return 0;& X! t8 S; V4 x
}7 {' a0 R( j4 P+ f" ~
- N2 q# W: [/ e2 a就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
& @1 Z$ j/ p' `9 d有劳有劳。
9 Z/ A8 ~( `) w1 c: K. S. J |
|