|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
( V) }# d/ f {*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:$ X! n/ u% V, g6 K) L& j; c
* ======== main ========5 @% w a+ c2 p, J% ~, `) H' [; n
*/8 s+ y) q% b, E3 O4 e3 w
int test;
, r0 |# Q7 e' r7 G: nint *pda;) u1 a# L2 E6 {3 T+ C
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;9 O8 H1 n. X! G3 E
Int main()5 u+ ]0 S' u% N5 v
{
9 X7 W6 S" a" ~ C! Z7 i7 H9 [4 \% H4 Z TSCH=0;8 j; z1 C5 G( x. e. M& a
TSCL=0;& ?( L/ `5 Q( [( `4 A
pda = &test;
/ {5 ~* c% Y1 O3 P t1 = _itoll (TSCH, TSCL);
# u6 T7 \+ w+ {( h. n/ C. c( L test = 20;
: @9 `& k- Z# ` t2 = _itoll (TSCH, TSCL);* g4 i& k' q# D! u
*pda = 30;" I n7 q- B3 m" _6 w& W$ b
t3 = _itoll (TSCH, TSCL);
! |5 L4 I$ Y w$ L. i- U tdelt1 = t2-t1;
; H; \, A$ [! [% S! \ tdelt2 = t3-t2;
c; u3 W" y3 P/ G return 0;+ ]# c) i* \+ a; W: F
}6 c( E) z6 }" V& {. _6 M
7 _3 B& d. M: B2 p r
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
8 T" W) ^# ^( S) \( }$ s6 C7 Y R% g有劳有劳。+ j+ j. g( p( W4 D
|
|