|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如! Z8 B) N( f+ d; W9 j1 q8 c
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:/ d: E9 V3 E' i: C7 @5 k- `
* ======== main ========
]4 `% b+ `$ @9 w */
8 e( { b3 ], Z) ~( cint test;
7 B9 @9 M/ P2 m: e5 a8 D# rint *pda;1 a: p/ b! @# }3 h
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
; ^) o2 [3 \# v7 `Int main()1 m/ |, F5 z2 y# O% W$ A! B% q
{& W" F& n. O, C/ m2 c
TSCH=0;5 o4 A& x/ ~9 b% o7 [1 t7 n
TSCL=0;$ R. |* ~+ Q% E
pda = &test;
( a. [$ _0 ?; { t1 = _itoll (TSCH, TSCL);1 Z* P/ u6 _1 \1 ~6 _
test = 20;
) I/ V0 o7 y, I. h5 u* Y t2 = _itoll (TSCH, TSCL);+ J9 [# K+ Q! B7 n4 s+ Y; Y
*pda = 30;& G+ {( D) p) J& Y& ?4 @8 S
t3 = _itoll (TSCH, TSCL);1 Q( o- @+ D9 @4 D
tdelt1 = t2-t1;
& \! K9 G' {6 O* v. {8 d tdelt2 = t3-t2;8 g( [" a4 \4 X8 R. q* ^0 Z) Q1 l
return 0;
( y0 F! i1 K. X X" ` g0 |}
# G9 w7 z' t9 D4 H& J4 y3 h& T: [7 \2 O9 V- O/ P3 F3 H8 q2 B" M
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。, D4 C1 q5 V9 {# W1 t6 m8 d0 r$ B
有劳有劳。
- W6 D7 x$ W" P: J- j+ I$ a6 ]! S! S |
|