|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如1 Q* W: {* s' K
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:. `3 d1 |. f5 S" p( V4 t8 }2 O8 G
* ======== main ========" O7 C- P }: U+ p ?
*/( A! A$ f! p! F7 d% ~
int test;
4 w3 q/ @3 o; bint *pda;
9 }4 z: Z' Y1 I P: ]7 jlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;0 H* n, a$ `: R! b/ d# y% Y6 l$ {
Int main()* j+ t3 q" r+ H; s# _' ~+ Z6 c6 G
{% _2 Y- M0 y* N, b$ z/ h
TSCH=0;5 ~( |3 ?% H& `" @2 W3 p6 c- L0 K1 ]
TSCL=0;! s/ z' D3 K' n+ A) {7 X
pda = &test;: W5 R: L+ t: T& F$ a/ B
t1 = _itoll (TSCH, TSCL);5 M1 ^! ~: G# a6 M% m
test = 20;+ Y+ p+ q% K4 a3 |( q% j3 o' A
t2 = _itoll (TSCH, TSCL);; ?0 {/ f* C, J2 B
*pda = 30;
; V1 V9 c# w! L5 Y+ K6 m! ^4 |6 ] t3 = _itoll (TSCH, TSCL);8 U. \' i9 O$ m o
tdelt1 = t2-t1;
! O0 C% n$ B3 p6 e/ _ tdelt2 = t3-t2;
5 s# ^ k: z% I9 \( d" o" L4 f return 0;
" @1 L, x& z Y! u- X+ }; n}
+ E9 H0 y/ P: x+ A0 s, e- B
$ M* D) j0 ^: `% z* T" _就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。- j0 K! j9 Z2 P# z
有劳有劳。
) n: z2 f4 u: m. ~( b( ]& [& r2 H |
|