|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如' ^0 u7 z& _! i' k; E, g- J" |
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
* i8 j- ` j2 r6 P/ `# S9 A) L! G * ======== main ========5 |! c9 p( ~7 ^; W8 I% [
*/
6 G* z1 |$ Q. x. n; M( E" {/ c7 T7 qint test;( p* W4 ?# [. |: G, X* @
int *pda;' p# ?6 j, N; j! j
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;- ]! B$ D2 n% _* s6 j! w$ O
Int main()
3 p0 K7 w( Z2 ?1 ]{
; u! c8 P! k/ G) T TSCH=0;! h" f1 h' z( o2 d' h V1 Q5 |
TSCL=0;
1 w3 [+ L/ e. D' |/ z) c% S) v2 Z pda = &test;1 F, y" |8 Z u7 L0 m" g D6 M
t1 = _itoll (TSCH, TSCL);
# V5 f$ f8 F# I test = 20;+ V0 v; l: F8 }: W
t2 = _itoll (TSCH, TSCL);
% a# M" {- i+ @' C/ ?0 N/ ? *pda = 30;$ V0 o1 q& I# S9 A
t3 = _itoll (TSCH, TSCL);
! R6 ^" N; o* U6 i tdelt1 = t2-t1;
. k% K4 f# v$ Q- X" h6 ^" Q tdelt2 = t3-t2;8 F) s" C! T- ~
return 0;3 i) S$ J) d: F) \" f% F9 A4 Q
}
& N6 ?* r& N/ h" P& T7 s: r7 C; V5 n1 L8 v5 I
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
4 p% |* m6 k2 O% U* d% G有劳有劳。
4 Q8 g7 j$ {0 x4 ? |
|