|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如5 t3 p- w' s1 j) a/ S
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
) Z2 M V2 W. U# n6 k. v: P, ? * ======== main ========
; _5 V% I) I( P* f */& p. f1 R0 W h! V9 i6 T$ b
int test;
3 b* ~% ?; w2 c& H ]int *pda;
* v2 x5 j. n# r4 ~( w3 R2 hlong long t1,t2,t3,t4,tover,tdelt1,tdelt2;/ u. F/ Y( V1 r- P1 B7 o4 M+ p
Int main()
: F h8 ?8 e& @{
( c1 g* K, ?8 B* m7 d. k TSCH=0;
# M& c8 S/ ]" H0 k7 S TSCL=0;
; x% G2 E' ~- _* v3 z1 ^ pda = &test;
% P3 j2 t. d3 k& l t1 = _itoll (TSCH, TSCL);
/ Q: g$ m$ n+ o test = 20;
2 k) i: j+ \9 Z- o( i9 z" S t2 = _itoll (TSCH, TSCL);& V7 [( e# l: H
*pda = 30;: p2 y9 L, Y, V# F7 D
t3 = _itoll (TSCH, TSCL);7 G! V& B0 M# G* t
tdelt1 = t2-t1;5 z6 c3 ?" o- ~1 ]8 |& O
tdelt2 = t3-t2;
5 g% \" e) K T8 x4 Q return 0;
: E0 N4 ^3 L$ J9 ?2 @2 C }) D}
S# l$ V T+ l/ @' T2 ~) m2 b; |5 X8 e+ Z. C1 J1 p1 A
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
2 k2 q% d3 ^* p3 x) E有劳有劳。
2 P, |3 D8 `2 h! r2 E" N |
|