|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如8 O( [# S5 e, h) b( N6 u; ^3 x
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
% t6 v) l* u3 U) ~; n * ======== main ========
6 P6 L% y) |, |& _4 J) q */& ]& M" [5 J J/ I8 _0 A7 B
int test; S0 k* _1 P. w. s, `4 h
int *pda;
) ~3 Q8 D5 q: E- W# c F" p+ ~long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
* R. m+ ?0 z1 X" L" \3 d* s& J0 cInt main()
% t G- P7 C( F" F" \2 W& N0 z# v{
, u; U$ C$ _- Y# f; j3 U TSCH=0;, U) r: Y9 g) b+ j+ f' j2 @
TSCL=0;
" x B3 p! x4 h1 M pda = &test;2 x9 ]" [# o. [6 H9 q& N
t1 = _itoll (TSCH, TSCL);
; b, h9 B3 J9 E! e9 ?2 N2 v) I. u4 H2 t test = 20;" t# ]- C7 E3 y. b( v# g6 K- B
t2 = _itoll (TSCH, TSCL);' M8 m6 M: x8 U; }4 k
*pda = 30;0 V( _. j0 ~1 d3 j# g' ~5 n% g' r7 b
t3 = _itoll (TSCH, TSCL);$ d. A* ~, k* k* H
tdelt1 = t2-t1;
" B" h/ O8 P$ ^1 o& ] tdelt2 = t3-t2;
+ e# o' T$ u! M1 L, w5 I+ O6 i return 0;
, ?! ~; G; [. S. p" p}, f5 g( v8 u+ R: y- ?
0 M6 m. } J0 a) f
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
+ W1 r1 _# Y @7 W- U有劳有劳。
( ^9 g3 y' X# D8 O4 P |
|