|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如- E% I, f7 {" L: a
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
3 z9 t5 a4 m! a1 S& v& T# j * ======== main ========! }8 s- |: U8 F
*/
) S J+ l y% n1 }int test;
6 z7 J, O8 B$ a$ w+ Tint *pda;& M% ?/ A; c/ b) g4 ^& k& A- o
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;2 x/ d# Z6 q Y( b! @: X
Int main()
2 O- T! g: r4 B7 j7 E" \{
6 d3 M" [' [, D TSCH=0;0 @4 s( h& e" d @( S) i% U( T% O
TSCL=0; S4 A1 w8 E3 S8 N
pda = &test;; X# M9 A; I4 [: Z4 h s
t1 = _itoll (TSCH, TSCL);8 L8 X6 G# D9 l7 F) c
test = 20;
- F# C2 o. ?% F9 H! W1 ?) o0 i! T t2 = _itoll (TSCH, TSCL);
; ~; C8 ]5 B* M) ^5 I/ F *pda = 30;# y& y$ B& V- l
t3 = _itoll (TSCH, TSCL);( O( y7 i7 R4 d* t0 C1 H5 h% c
tdelt1 = t2-t1;
( o; x, b3 C+ l% ~6 G tdelt2 = t3-t2;
+ T" P/ U5 e! R4 v+ O" N return 0;
6 w7 A9 T2 p( l$ J; l}
* l) W6 h" X) w& [' }7 D
0 ^: j( Y* E- A4 p x就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。' h# W9 ^5 B$ x: w# U
有劳有劳。+ q/ U! L! t9 l
|
|