|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如2 n$ n6 s! o- t4 J2 {
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:; O. n" ?! i6 @7 }+ ?/ y/ B
* ======== main ========# V" J+ B1 k7 {, U7 ^* J% T
*/3 D5 z I& B' \" Q
int test;. E" U1 Z* T: t) s% p( K3 T
int *pda;
- _2 @1 w6 n" W& f! Flong long t1,t2,t3,t4,tover,tdelt1,tdelt2;, K2 a" g) z! y
Int main()8 R/ V* F% T8 d7 f- {* P' J3 J# i
{$ F2 \! w; G- ]# d' |
TSCH=0;
8 y# P3 f8 I! y6 D TSCL=0;
# r5 B5 Z8 w' }, ]( Y' `; G2 P pda = &test;
7 E2 z; u2 R; J& F t1 = _itoll (TSCH, TSCL);. P8 P7 l1 l) v$ a4 [
test = 20;! {- a- f0 @0 } a2 B0 M. h3 V. Y
t2 = _itoll (TSCH, TSCL);# _) f2 X6 R, K# m& J" B: Z+ B
*pda = 30;4 {( j: G0 M+ S9 {0 \6 m
t3 = _itoll (TSCH, TSCL);
" r) `) o9 p6 U3 q; z6 Q! D tdelt1 = t2-t1;9 p3 H% a' {4 ^' ?7 O
tdelt2 = t3-t2;
. X- J6 s- W& Q3 T return 0;8 n. s4 z3 u1 Y0 l0 ~3 V) g% L! p3 x9 R
}! ?5 `0 s( E$ a9 Z$ \! ]
- g9 T8 ^" o0 n就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
M6 b" `0 |/ l' K7 u% ^; h有劳有劳。1 A! ]1 y" @) N7 a& c' [
|
|