|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
! c! N D, r6 P5 _*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
8 Q; J7 s9 X$ g; {- u( Z, b * ======== main ========6 r5 I, i$ F* Y; N8 A9 k& ]$ @0 a
*/
9 ^, L$ v! W5 G! sint test;2 u/ I8 `4 M( n0 T. J7 \" P* ]
int *pda;
5 E7 W" u! G) nlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
: n5 o$ Z$ k7 ^: u8 qInt main()! W2 V6 ^1 A5 p0 {! |
{
O/ H; i6 p& m' R4 \ TSCH=0;
/ I; o0 Q5 H9 t+ C' `/ \( t TSCL=0;
) ~ Q. f* ^1 J- f5 o5 `; S Q pda = &test;
, t# @4 b+ l# l, q1 N! B8 I6 p t1 = _itoll (TSCH, TSCL);, M" T6 Y& s, M% D; G
test = 20;
4 l. \+ h- U+ H+ m ? t2 = _itoll (TSCH, TSCL);1 a& p) R1 x0 C( s; Z: z
*pda = 30;
0 }/ m! `: T: X+ g t3 = _itoll (TSCH, TSCL);7 d3 r3 a9 c. l5 e; W
tdelt1 = t2-t1;' N6 H" r- Y: D$ J
tdelt2 = t3-t2;
6 d; j7 p4 s: X return 0;7 S [9 c; f" o2 |. B" K
}1 J9 T+ d( | l1 Y
6 @. o, Z6 [9 K' X3 q
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
3 I3 F6 X; [3 F/ N/ P, B有劳有劳。
& X4 F- v' N/ j1 p4 N |
|