|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
& f; h6 @9 ~" ? f*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
! _ q* ?6 ~* L. X% E; q3 K * ======== main ========* w6 C t; j9 P
*/& `" k; o, h* W7 Q- U8 e, L
int test;0 z3 R# e S) h- X
int *pda;. @, M: z6 T( J3 z* S# K- T
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
' [4 H$ t, g! U1 QInt main()4 m* w4 Q L( t9 x6 B
{8 g) _; m( ?! }+ O3 C. z0 r
TSCH=0;' @$ |4 H* b- M* P' p& B' w
TSCL=0;
7 e* E1 d* S" x( \ pda = &test;! D2 S7 I% a0 }% e! r$ V2 S7 v
t1 = _itoll (TSCH, TSCL);
- s, T, }% \9 P* c test = 20;
* _' j4 x5 [4 K, M' [ t2 = _itoll (TSCH, TSCL);' h' e+ v% S' E$ W8 h% Z
*pda = 30;
0 i+ y- P1 q+ `( P t3 = _itoll (TSCH, TSCL);1 G: k! ]( W5 T; c1 F% k
tdelt1 = t2-t1;
: F$ G( m" K' z tdelt2 = t3-t2;
# p, h: V/ G8 n5 k2 h5 \3 p2 x- U return 0;+ U1 m& I+ k2 k! J2 s0 q2 D5 N ]
}% M" \3 o( K" y8 f5 p e/ w8 F4 ^0 l
9 W; Y2 ?8 U8 P1 Y9 J( ]就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
& K0 n" g; v" F* a4 n6 ?+ V有劳有劳。( n2 W* ?2 F. L% y, ^8 S
|
|