|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如( y; Y2 i1 d3 o* |$ L [& i
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:9 n: j# F3 |& W2 w+ k& y% i
* ======== main ========2 x6 j+ M: N& D6 i5 @, K L" S
*/
) o# i4 S$ s2 t' _* bint test;
- O v9 o+ v6 b. N+ N2 i5 Eint *pda;
9 Q% f3 \- z/ e* |long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
! b8 ~7 h' V2 G3 ^; A! S2 vInt main()4 b" S8 L, ~1 n( v
{ u% S4 W) c2 D" I! L3 ?# I; z$ B
TSCH=0;
2 i! z9 u! r* L0 {: Z6 I" Q: W TSCL=0;
; ^ d: b3 ]" W pda = &test;
N0 q+ m1 L" q7 j! u% p1 u) c5 G* G t1 = _itoll (TSCH, TSCL);/ C, p9 F# g! x
test = 20;
& u5 h! G, d2 y' Q( j t2 = _itoll (TSCH, TSCL);6 k# Z( h% ]- l+ j- \! @, y
*pda = 30;( O' m) o. u! j
t3 = _itoll (TSCH, TSCL);
! {2 F" K9 k* j6 _! r: ^ tdelt1 = t2-t1;
# `0 i9 [5 D7 S9 i, Q5 K& q/ H8 @ tdelt2 = t3-t2;3 y- h/ [1 C# v1 s5 j
return 0;% e# S) d0 S- d: b; y$ p) ^) ~
}- ^" c! P6 ~: F) @& N/ @3 _+ ?1 X
: m+ J$ g1 H( B* o' N. o0 J就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
' a1 V: ?& J8 T) C3 j* z6 [有劳有劳。
# ] u `& \1 ?% g7 n |
|