|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如6 M3 Z1 @$ W; f: M
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
/ x; I2 \' e; |8 w9 C2 e3 {8 k * ======== main ========
4 V, E- l) j6 \5 z */1 b$ O8 M/ J2 g0 g
int test;
/ o; x: O: }: Z- h% T8 r; o9 oint *pda;
) B, k- a; B. ?- J( d# c4 G4 z% H# Flong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
: x% q; p& h7 h9 W/ N& lInt main()( Z/ ~0 u# ~8 c2 y2 g3 E
{+ r4 m0 z: O. e; N& M7 M- b! _$ Z
TSCH=0;
+ L8 w+ l2 y/ s' W9 } TSCL=0;" s/ P2 i3 o2 d; ]; u
pda = &test;+ a2 I/ {" o+ _$ h& S5 E
t1 = _itoll (TSCH, TSCL);# `! C1 C2 F, K5 w
test = 20;, c3 F. E5 s, O7 `* ]/ V
t2 = _itoll (TSCH, TSCL);
. C( a7 U$ c3 k4 F+ K* v *pda = 30;
0 T$ j) N- A9 |" O6 J, _; }; M& O! ~ t3 = _itoll (TSCH, TSCL);, ~/ _1 ^8 C/ h
tdelt1 = t2-t1;( k1 a6 }1 I9 U* k3 P
tdelt2 = t3-t2;
4 P# o# [3 H: k; a( h# Q) [4 w return 0;9 d' T) e. t4 I& k6 }0 ` M
}
/ A; B: h+ C S, l
% c+ `8 i& O0 }0 J" _' ?: o/ P: T就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
" ^0 k, Q+ S8 O9 M7 m4 C3 N: {有劳有劳。% S8 l; }% M/ F; g3 d
|
|