|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
& Q( Q) p' t4 p0 \*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
& t/ ?" e0 k w$ d- d+ q * ======== main ========
: q& O& p$ _7 a *// u! m& n% X. ?/ H$ A* O2 @3 T+ o* f
int test;" V5 L f( [6 V5 \# v) {, r
int *pda;
$ d1 v! T' s/ j/ Y! z8 klong long t1,t2,t3,t4,tover,tdelt1,tdelt2;
6 W8 t. Z9 e. X9 g6 b# [- oInt main()
: e8 s8 D3 X5 J% z0 E{6 C8 } O5 E9 |# W
TSCH=0;
+ D- t/ I! R( C$ [2 s TSCL=0;! I3 o1 o0 I3 y z2 s; c9 |2 c
pda = &test;
4 f# ^: j+ u6 \4 v* W& _1 t t1 = _itoll (TSCH, TSCL);+ V# k: K4 J$ v
test = 20;+ D$ o% Q7 E l) a* o2 [
t2 = _itoll (TSCH, TSCL);2 E# l. l) A0 V x% _! u5 B
*pda = 30;
) E7 {! r n: F t3 = _itoll (TSCH, TSCL);
. \4 T+ U O( b9 \# { tdelt1 = t2-t1;
# r+ H, f' d( n0 i; G tdelt2 = t3-t2;
- _) a' {! ^8 k. z return 0;0 @$ A7 a& f ]( L: j. a
}, I' |* r' c# J
4 r$ i5 q' ?; r# l: G; B m就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
! Y) Y$ {4 P* ^, ?8 D( m5 s有劳有劳。( @( J5 V6 E. O
|
|