|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 t2 s9 |8 S5 I, G
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:: B( h! ^4 N1 O( i2 v& |
* ======== main ========8 k& u% F: ]' C2 d" u
*/
X* x! |: q( [' V% Wint test;& K) C/ o3 L, G/ J- b$ m0 z# E
int *pda;
7 ]4 E: _" ^$ \4 q# Y; I. v( ylong long t1,t2,t3,t4,tover,tdelt1,tdelt2;. Q& L* m2 o2 `* z: ~5 x: p
Int main()$ e' {8 g! _9 h
{
7 b9 n& s5 _7 n U+ x TSCH=0;
+ f# N. \! }1 B7 v* k TSCL=0;
. y& k. |- i# f8 s3 ?+ A6 j' \ pda = &test;7 l+ m; K3 k8 q, x2 R' ^8 r4 u
t1 = _itoll (TSCH, TSCL);, J' y( m( Q+ `9 E
test = 20;
6 k6 P* X, K$ m$ W* q2 p$ s t2 = _itoll (TSCH, TSCL);1 m8 S2 l0 n3 I
*pda = 30;
$ b) S3 {% A o t3 = _itoll (TSCH, TSCL);7 D( Q9 P+ I+ S6 b! e4 j
tdelt1 = t2-t1;
& f7 D% s5 I6 _: U8 E6 y tdelt2 = t3-t2;
2 M# W2 }) H( R+ `, o return 0;
$ c" H- N) t# _0 r8 o% y# y1 f} ]2 E! W; g+ O0 J
1 [0 O: l$ F+ k$ J
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。& {# A# u- m: I/ C) ]) x9 |
有劳有劳。
, Z! P2 h& v7 l3 d7 F. X |
|