|
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
8 z) ^4 T5 a5 M4 Y- l# y7 ?3 c*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
; g* `# S3 G4 Z8 K- h * ======== main ======== X2 k% J5 E# W5 ~1 y8 J* z
*/5 @* O5 ]5 S/ ~2 e V
int test;, ?& q2 d% \7 e" {. }
int *pda;) W6 k8 u% Y v$ ?5 Z1 F/ I, q
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
! B a1 N, k$ B1 J8 KInt main()
- [4 O9 H, J1 Q- P+ x: r{
5 @! B& Z6 j/ D$ ?% `% q; p# J0 ] TSCH=0;+ O/ M3 h- h# j3 V1 e0 j5 l8 y/ F
TSCL=0;: B9 [* m% {; t* B
pda = &test;
! j R" n" o+ A! Y- B! R+ c t1 = _itoll (TSCH, TSCL);! X" x' M5 [7 f! P
test = 20;/ G6 N( b0 g! r1 A" g
t2 = _itoll (TSCH, TSCL);
" S5 \7 P0 Q' @/ Q$ ?6 n ?/ t) v( ^ *pda = 30;3 ~8 p9 C4 L" o y
t3 = _itoll (TSCH, TSCL);
6 |" j, G. F0 U$ l7 c tdelt1 = t2-t1;0 _8 C- z8 z/ z' V5 B; t6 t7 V8 }' I/ e
tdelt2 = t3-t2;1 I1 w7 ^1 d6 o/ E, p
return 0;
" T, Y: d: _6 p( h( J6 D1 i}
! Z/ @% L. Y4 ?) F! Y
& a! U n4 w4 I9 H9 V- R* r就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
( a; X! ~4 ?7 z+ R$ d) {. a4 C有劳有劳。( h2 ?9 o+ [, a% d
|
|