|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
1 n1 a& y: i% p, h) | L0 h( @*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
3 v) H# x- ~% `4 l! [ e * ======== main ========
4 |5 g7 ?+ c* [6 ~2 z */
) d. e, r$ V6 ]% s, Y& ?int test;
1 d& S9 j c, a( ]" {9 yint *pda;. ~% d: x' V$ Y2 M6 Z& F* A
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;7 L$ N$ X+ }" x# S* V2 M0 H
Int main()" V2 H+ W3 N( r$ m( D$ I9 Z2 f
{
5 I9 e* O3 z+ W% K TSCH=0;9 `: K" I- o9 n0 _" o& ^1 A
TSCL=0;8 @2 Z8 {+ G# Z( X
pda = &test;
2 \7 p* s$ B; d t1 = _itoll (TSCH, TSCL);: x* `7 S/ P# H5 Q. k
test = 20;
% E& c! r' h$ V4 @( u6 A; G y t2 = _itoll (TSCH, TSCL);2 k& B) ]$ N+ R0 z7 F4 C) @
*pda = 30;( e' T4 p4 D4 o/ P2 G1 O
t3 = _itoll (TSCH, TSCL);
% R1 D6 {3 h9 b8 X7 @* j9 J' i tdelt1 = t2-t1;
+ W, r( g$ [6 W. i3 L( W tdelt2 = t3-t2;) U2 G. i4 w' F- E# _3 s. F
return 0;
8 D3 |* N' V0 \# Q% `# C* ] I}
/ U9 c7 U! Q2 ^0 ?4 q9 R$ w- Q
# ?# i# h. x! r! _/ e8 l% S就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。% L# w. U/ R; I4 ]8 Z
有劳有劳。; Y, w) M) P/ P/ n; G' w, F
|
|