|
|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如+ ^7 a4 @$ ~6 {
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:* N* S4 ^& |- s) S9 s6 t) J
* ======== main ========
- Z" h2 t) _6 U' W3 p */
) [9 r$ B5 |/ I4 ^5 {5 e! Iint test;
: a) b. W# M/ n1 Q- d% x, G0 `# q _int *pda;: X# q1 t* ^# m- }% D
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;3 z5 R, f+ W% B, c* v
Int main()8 y6 L. n0 e4 }# L4 v! P$ _
{
+ A/ U% v% _: z, N. j' S. x9 [ TSCH=0;
! @0 Z. [" ?# ]1 l TSCL=0;
. ?# S0 m6 O& {+ ?. c$ d6 h( S pda = &test;
8 V! a! P* b' H: w0 _ t1 = _itoll (TSCH, TSCL); A/ l$ d: s8 u# D, [, L, b
test = 20;1 R* Q" d; y' L3 Y
t2 = _itoll (TSCH, TSCL);, {9 p( D o5 ?" x; [4 s3 ^
*pda = 30;
- K6 T {) E2 A* ^ t3 = _itoll (TSCH, TSCL);
' ]: e$ z' z$ L7 M$ Q tdelt1 = t2-t1;' I/ o+ a) A1 A& A$ p- J
tdelt2 = t3-t2;! k+ }. {7 G( s) s
return 0;
9 p! w: U s9 @}
& z- X# Z4 n; j. ?% e9 N& N! w; j! Y7 R
& l1 P `2 S- g% Z( ?1 \/ R" C' A9 j就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
6 t h+ B$ a2 X8 i+ S) S% `1 ~有劳有劳。) _; c1 ^ j1 P, f
|
|