|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
4 K7 r, o/ i0 h+ ?5 J*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:$ R, o( x" c! I# M- o
* ======== main ========
- Q( P, u# ?2 A5 T5 e */% B- u6 P" n7 B( W
int test;7 P2 A0 R% A8 U: Y* R$ t
int *pda; `$ C+ N0 V4 S: t1 ^% V( ?; l
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;% d7 u1 B. O) u5 Q$ D
Int main()5 Y4 l9 j( @4 M0 r$ W. V
{
; s$ Y! u, C. M; W t; ~ TSCH=0;
: A. |2 u" _$ z! J0 e/ c: Y) C, I; J TSCL=0;, N( Q% ^; E& ^2 d
pda = &test;+ ~% D6 n) y+ Y- m5 }/ R' \
t1 = _itoll (TSCH, TSCL);8 s' U$ J) [3 K" x( @$ q
test = 20;
$ h7 N" x6 A0 D/ O! |+ ^6 u* \2 V t2 = _itoll (TSCH, TSCL);, I, t" w2 o; R; B. u; Y7 K/ t& t
*pda = 30;( }- y# D* J3 g
t3 = _itoll (TSCH, TSCL);! ]( L; M7 x. W* y. E5 q) Q: U
tdelt1 = t2-t1;
8 |: o: E0 B) B8 P tdelt2 = t3-t2;
$ R/ G0 U9 \& H return 0;" Z% i. E& w A& _+ d: `- [3 _( `
}
3 P: k4 q0 I% [0 E; R1 U1 W1 z# S' d
1 b! `% {4 N& W( i% e' e就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
3 \$ ?! a% Z8 W; ^$ t+ n有劳有劳。
. v) C- x C' j! D3 Y$ J- u @ |
|