@@ -15,51 +15,49 @@ fn psp_main() {
15
15
sys:: sceKernelChangeCurrentThreadAttr ( 0 , ThreadAttributes :: VFPU ) ;
16
16
}
17
17
18
- let mut size = 16 ;
19
- let mut cpu_dur = Duration :: default ( ) ;
20
- let mut cpu32_dur = Duration :: default ( ) ;
21
- let mut dmac_dur = Duration :: default ( ) ;
22
- let mut vfpu_dur = Duration :: default ( ) ;
23
- //loop {
24
- let src = unsafe { alloc:: alloc:: alloc ( Layout :: from_size_align_unchecked ( size, 16 ) ) } ;
25
- let dst = unsafe { alloc:: alloc:: alloc ( Layout :: from_size_align_unchecked ( size, 16 ) ) } ;
26
- cpu_dur = psp:: benchmark ( || {
27
- for _ in 0 ..1000 {
28
- unsafe { memcpy ( dst, src as * const u8 , size) ; }
29
- }
30
- } , 10 ) ;
18
+ let size = 16 ;
19
+ let iterations = 1000 ;
20
+ let cpu_dur: Duration ;
21
+ let cpu32_dur: Duration ;
22
+ let dmac_dur: Duration ;
23
+ let vfpu_dur: Duration ;
31
24
32
- cpu32_dur = psp:: benchmark ( || {
33
- for _ in 0 ..1000 {
34
- unsafe { memcpy32 ( dst, src as * const u8 , size) ; }
35
- }
36
- } , 10 ) ;
25
+ let src = unsafe { alloc:: alloc:: alloc ( Layout :: from_size_align_unchecked ( size, 16 ) ) } ;
26
+ let dst = unsafe { alloc:: alloc:: alloc ( Layout :: from_size_align_unchecked ( size, 16 ) ) } ;
27
+ cpu_dur = psp:: benchmark ( || {
28
+ for _ in 0 ..iterations {
29
+ unsafe { memcpy ( dst, src as * const u8 , size) ; }
30
+ }
31
+ } , 10 ) ;
37
32
33
+ cpu32_dur = psp:: benchmark ( || {
34
+ for _ in 0 ..iterations {
35
+ unsafe { memcpy32 ( dst, src as * const u8 , size) ; }
36
+ }
37
+ } , 10 ) ;
38
38
39
- dmac_dur = psp:: benchmark ( || {
40
- for _ in 0 ..1000 {
41
- unsafe { psp:: sys:: sceDmacMemcpy ( dst, src as * const u8 , size) ; }
42
- }
43
- } , 10 ) ;
44
39
45
- vfpu_dur = psp:: benchmark ( || {
46
- for _ in 0 ..1000 {
47
- unsafe { psp:: sys:: sceVfpuMemcpy ( dst, src as * const u8 , size) ; }
48
- }
49
- } , 10 ) ;
40
+ dmac_dur = psp:: benchmark ( || {
41
+ for _ in 0 ..iterations {
42
+ unsafe { psp:: sys:: sceDmacMemcpy ( dst, src as * const u8 , size) ; }
43
+ }
44
+ } , 10 ) ;
50
45
51
- unsafe { alloc:: alloc:: dealloc ( src, Layout :: from_size_align_unchecked ( size, 16 ) ) ; }
52
- unsafe { alloc:: alloc:: dealloc ( dst, Layout :: from_size_align_unchecked ( size, 16 ) ) ; }
53
- //if dmac_dur < cpu32_dur {
54
- //break;
55
- //}
56
- //size += 16
57
- //}
58
- psp:: dprintln!( "size: {}" , size) ;
59
- psp:: dprintln!( "cpu: {}" , cpu_dur. as_nanos( ) ) ;
60
- psp:: dprintln!( "cpu32: {}" , cpu32_dur. as_nanos( ) ) ;
61
- psp:: dprintln!( "dmac: {}" , dmac_dur. as_nanos( ) ) ;
62
- psp:: dprintln!( "vfpu: {}" , vfpu_dur. as_nanos( ) ) ;
46
+ vfpu_dur = psp:: benchmark ( || {
47
+ for _ in 0 ..iterations {
48
+ unsafe { psp:: sys:: sceVfpuMemcpy ( dst, src as * const u8 , size) ; }
49
+ }
50
+ } , 10 ) ;
51
+
52
+ unsafe { alloc:: alloc:: dealloc ( src, Layout :: from_size_align_unchecked ( size, 16 ) ) ; }
53
+ unsafe { alloc:: alloc:: dealloc ( dst, Layout :: from_size_align_unchecked ( size, 16 ) ) ; }
54
+
55
+ psp:: dprintln!( "size: {} bytes" , size) ;
56
+ psp:: dprintln!( "iterations: {}" , iterations) ;
57
+ psp:: dprintln!( "cpu: {} microseconds" , cpu_dur. as_micros( ) ) ;
58
+ psp:: dprintln!( "cpu32: {} microseconds" , cpu32_dur. as_micros( ) ) ;
59
+ psp:: dprintln!( "dmac: {} microseconds" , dmac_dur. as_micros( ) ) ;
60
+ psp:: dprintln!( "vfpu: {} microseconds" , vfpu_dur. as_micros( ) ) ;
63
61
}
64
62
65
63
unsafe fn memcpy ( dst : * mut u8 , src : * const u8 , num : usize ) -> * mut u8 {
0 commit comments