|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如0 Q* e0 p7 d/ A, L4 g* B1 e
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:# D! j7 y4 H# m
* ======== main ========
$ S& v1 z, x" c4 e: B' Z. h% e$ d */
- z1 M! `: k8 t0 ?, d) C, a, G: Hint test;. I6 L( R8 o, X( H$ s7 B
int *pda;( z$ n6 @3 I5 E7 ~, Y l# U
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;7 ^" a9 R" F* W" ~: F9 `
Int main()
4 r" V; }7 l7 L{
( h9 _7 C2 o4 F- g TSCH=0;& I" u8 o0 y0 m7 g1 ^
TSCL=0;
9 j: a% `6 _2 h( ` w& W/ M pda = &test;4 y* M2 T" ^ p
t1 = _itoll (TSCH, TSCL);% \# o5 E$ j" c7 X: w4 L8 l% B- ?
test = 20;. {% x' _- C/ \( v
t2 = _itoll (TSCH, TSCL);
) Z7 o; ~+ \ b' F1 | *pda = 30;
# v3 B |/ f- j% @/ w t3 = _itoll (TSCH, TSCL);+ W- _# N3 S0 F& x- V) g8 J8 i
tdelt1 = t2-t1;
3 X4 @8 ~. }2 e7 K4 q tdelt2 = t3-t2;
; _( M' ?' H. d) m1 c6 U2 i return 0;
8 b+ f7 X1 S& D" ]' x5 X# p5 j}: q) N8 {- j, Z4 ?3 ], c
9 T# o( A+ ?3 A就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
/ h' C/ s; ~2 {+ S$ b) G$ y0 r有劳有劳。) q' f! ~' l. H( Y" Z: i
|
|