|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如8 t8 v9 ]8 h Y7 A. R
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:" e, k4 Y Q w, W, F! b$ O0 Y9 u1 ^ J8 M
* ======== main ========
% D9 i' \( b' ]+ `% I( j0 H */; U2 i5 l \7 X& b4 X. m& |
int test;
* l+ i7 C; x( j% G0 rint *pda;. @3 H# R) J: ^7 t9 y8 m
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
/ j+ p) z& c0 l8 t- Y+ Z( X! v; ]Int main()
* }7 A* C) W9 O$ ~1 D% f5 ?6 l{5 m7 P0 v4 k" d: s
TSCH=0;( |' K6 a/ z% I: \
TSCL=0;
6 ~; a) f! c1 ` b pda = &test;
- T1 f9 t s, H* l, V' | t1 = _itoll (TSCH, TSCL);
3 W1 u& c$ \/ i# ^9 E, s" i test = 20;
" I; f' }0 D" k4 [ t2 = _itoll (TSCH, TSCL);
' G8 A) l; F$ z: N *pda = 30;
- y# b/ n; U0 e! Z# U+ U2 C! h4 b' M: c t3 = _itoll (TSCH, TSCL);- q: S9 D$ T/ {8 c! y% Z
tdelt1 = t2-t1;
6 C6 B3 Y% f. K tdelt2 = t3-t2;$ s) f- j y# T% E" z
return 0;
0 P G& f1 a% S* K}
0 t Y8 }- Y2 Y
9 D2 v: A* i; m, S. r就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。/ E& C& z) z w3 p# U1 i9 Q+ c7 `( H
有劳有劳。
: `4 [ }1 @9 U6 X" e: ` |
|