|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如+ D( z+ C3 ?! s# T- {. ]
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:2 I) {3 w/ \9 @2 K& {
* ======== main ========
$ I' o7 x4 K! Y3 e: l0 y; C/ K */+ O/ Q- f9 S9 u$ v9 P
int test;! U4 x" {% e+ p" C( J
int *pda;+ F2 F/ {% i4 A8 X
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;3 Z) ?# R' l1 H9 t. {) l
Int main()$ d2 j) Y7 [* t* R" L' x: i
{8 V! R+ f2 M# {+ Z
TSCH=0;
8 y, m/ P9 v2 h/ Q, L) G ~ TSCL=0;
# H* { _. r, I( |7 G- o& d- _) ? pda = &test;
: x- U* W, m* _; I t1 = _itoll (TSCH, TSCL);
+ K( `- `1 _$ p+ ^) R4 s' Z+ o test = 20;
: Q% H" h* ?6 ^9 D t2 = _itoll (TSCH, TSCL);
/ E8 T# B7 B, b- ^( { *pda = 30;
$ _6 V& M, Q5 d* X1 w2 t2 U$ B t3 = _itoll (TSCH, TSCL);/ Q! t& U# `( y' m$ N
tdelt1 = t2-t1;
: d& S$ d3 E; ?' G* [. m+ l: a; ~ tdelt2 = t3-t2;
6 L. s$ S$ F8 J2 ~+ v return 0;
1 l2 R; x9 t! T0 {}
: h* e& q3 g" u7 X2 g2 h3 E; r4 L; m8 Q& o( o+ `! ^, g
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。0 o% H% a* r4 ]' U5 B) E. H }
有劳有劳。6 |8 W* H! p% c: @/ B7 X
|
|