|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如% K: B6 }: E! K2 C0 @. E6 A' r: Y0 ^( F
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
3 c% k3 j. F8 M4 S * ======== main ========0 s! G Z c8 u9 A* P5 K
*/
5 N" ^( }! e* h; d8 Z5 e; e% Qint test;
) Q* E* M- ~' S6 D" M* U, |5 [2 Gint *pda;; l/ ?8 m$ B' R
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;8 ]+ n/ e. f2 S8 u9 h b
Int main()
: L0 ^* S* Q3 X, g" T# p# p{
& E' n2 F# A( x TSCH=0;
3 C+ m+ c5 O, ^1 G/ c) n7 B TSCL=0;! H; X) ?* P0 _( B$ [. R: k
pda = &test;
' @; N3 X8 u2 @+ r y6 w* E t1 = _itoll (TSCH, TSCL);* @, a) F! x- Z
test = 20;8 q1 e2 Z4 I( E, k( j
t2 = _itoll (TSCH, TSCL);2 j1 C1 O4 l; c6 H5 E& i! B
*pda = 30;$ S# g; x" m C
t3 = _itoll (TSCH, TSCL);4 j" x/ I" j. L) v5 r! n
tdelt1 = t2-t1;$ @( a+ \7 u3 P9 H
tdelt2 = t3-t2;# I e8 d* ?6 Y$ ` {+ }8 b$ c5 j
return 0;9 d/ X$ x( U* d* v9 p4 W5 M' \# y
}' e$ n6 n, g# ^( _5 E
# [. R, n& i* n' f. |! n就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。; }1 k2 C+ N* R! q1 r
有劳有劳。2 `9 o7 |6 K5 w6 O; p1 W
|
|