|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如2 x" F4 z) Q( k& A3 q2 {$ _
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下: S5 f7 I u$ d; V+ e& ~
* ======== main ========
4 @: F- o7 O1 l */- F3 ]% p0 u/ m8 i& u
int test;8 X( z' g5 ^4 G8 ^
int *pda;7 m5 p5 b- v. T7 M2 {: Y2 O& i
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;. ^8 R6 _9 ?' c2 `
Int main(), b) d' z3 [+ p+ _4 ]& D
{
3 c S S$ b: @& Q N, } TSCH=0;; a& R$ y: c F) w0 ?
TSCL=0;
& }8 J; d, h/ {% ]1 { pda = &test;1 k( c ` A( ~2 v- v9 d
t1 = _itoll (TSCH, TSCL);
7 D! O) v F, P test = 20;. N* D" N& C' C) h5 |/ k
t2 = _itoll (TSCH, TSCL);3 w' X, M* B3 ?6 W: V: E/ f
*pda = 30;) y& R2 ], i% p$ l
t3 = _itoll (TSCH, TSCL);
. _& Q# T" H7 ^+ ?5 g* } tdelt1 = t2-t1;
m1 k5 u: C. ^# }, n/ N! S" o tdelt2 = t3-t2;
% }0 }, \/ Z% m* o0 i2 r: W ` return 0;& W6 Q* C' I0 S$ o
}# D3 d4 n8 c8 d6 [' a1 g9 D
5 [% d, S# X( Z. B V3 s& t! o+ A就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。# Y/ ~7 e: m' O
有劳有劳。
& @8 S. ?4 k& s& P" U |
|