|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
0 P1 b; X# H- {5 Y*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
. Z8 d+ E4 T+ E$ R9 y7 f3 e * ======== main ========) I% L' M4 N' a/ l
*/5 D# Q' o& p2 |4 Z. a$ _& ~
int test;) {8 `: L) O, M& y
int *pda;' M* p R# u& O; |
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;9 }; Z9 x: w |9 E& D0 N* F
Int main(): E* S5 u% F+ L) m' N3 t
{
( @0 v ?& ]% P# ^ TSCH=0;1 l* n0 P& ?# G$ y4 P' ?1 V- j
TSCL=0;" d9 S9 O& J- y' W$ h9 k
pda = &test;1 [- m8 Y" l8 u G# t
t1 = _itoll (TSCH, TSCL);
" D# k% V/ ^) u9 _ test = 20;0 Z: k% ~' d8 `# n+ h( h
t2 = _itoll (TSCH, TSCL);
' a+ S# k# w N3 x *pda = 30;
7 h- Y; `, l- B8 j2 U" K t3 = _itoll (TSCH, TSCL);- E' S6 R6 G4 ~+ o1 F0 _) D9 V4 d
tdelt1 = t2-t1;
* l1 _) X. y: T! d' k ~6 D# d Y tdelt2 = t3-t2;
, K1 a0 T/ Y0 P, P return 0;
/ s! L3 R: c) m}& C$ C) K( ^& @6 D u
, R+ a% t+ B- C n$ U6 C
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。1 a) {% a/ H0 i; J; a
有劳有劳。
) p, n! |! p* ^0 m |
|