|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
( f4 x0 i1 E) Y0 _2 z- [* p# P6 W*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:: N& z# D* q( r5 G* a {+ a
* ======== main ========
* ~* m( {2 }6 U- Y+ @, m/ g */# t: w( E2 N J6 U" R
int test;
8 q" q" A, c/ ]6 A' {int *pda;
( { E6 K1 j8 Q6 b0 mlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;- l8 w' a9 g0 [8 D
Int main()
i- O+ V o, j1 i" ]" I: p{
& q9 j/ o6 z+ o, ^3 K TSCH=0;0 w7 _9 R" o; ]* o1 K1 v1 v0 Z
TSCL=0;
, {: R/ x2 T( Z0 S5 Z' z pda = &test;1 o) \8 x& b, y1 [" R8 N
t1 = _itoll (TSCH, TSCL);
, Y z e0 s: y& o test = 20;1 I6 k* o) z$ S2 a8 Q
t2 = _itoll (TSCH, TSCL);' p8 p, r8 W4 X! ^: b
*pda = 30;1 Z n. w6 N, ~$ H
t3 = _itoll (TSCH, TSCL);
- s- J) o) p0 `. v* j7 D* d3 J) r tdelt1 = t2-t1;* D( U# m# X3 c1 Z. X
tdelt2 = t3-t2;
7 r, ^% P' N. K1 \ return 0;. A! d( t9 y/ }' j2 o0 T7 \5 Z
}
' h! Y2 v7 Q0 v. s
/ J6 V" [1 I) z3 |2 @! Y6 `就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。+ y& p; Z5 [3 z* ^$ U" r
有劳有劳。
" Q* {2 y' p: H, h% e |
|