Author Topic: memcpy implementations speed comparison (Clib, Libc, newlib, neon, Dmac)  (Read 9700 times)

teakhanirons

  • Guest
CACHED->CACHED:
Code: [Select]

NEWL: Size: 12, 154.650 MB/s
NEON: Size: 12, 154.650 MB/s
CLIB: Size: 12, 68.940 MB/s
DMAC: Size: 12, 0.184 MB/s

NEWL: Size: 33, 321.135 MB/s
NEON: Size: 33, 226.412 MB/s
CLIB: Size: 33, 314.713 MB/s
DMAC: Size: 33, 0.522 MB/s

NEWL: Size: 32, 299.192 MB/s
NEON: Size: 32, 232.959 MB/s
CLIB: Size: 32, 314.614 MB/s
DMAC: Size: 32, 0.521 MB/s

NEWL: Size: 64, 575.803 MB/s
NEON: Size: 64, 331.713 MB/s
CLIB: Size: 64, 401.547 MB/s
DMAC: Size: 64, 1.035 MB/s

NEWL: Size: 66, 434.086 MB/s
NEON: Size: 66, 374.658 MB/s
CLIB: Size: 66, 462.813 MB/s
DMAC: Size: 66, 1.044 MB/s

NEWL: Size: 99, 597.555 MB/s
NEON: Size: 99, 353.610 MB/s
CLIB: Size: 99, 539.507 MB/s
DMAC: Size: 99, 1.559 MB/s

NEWL: Size: 127, 576.746 MB/s
NEON: Size: 127, 445.282 MB/s
CLIB: Size: 127, 538.296 MB/s
DMAC: Size: 127, 1.998 MB/s

NEWL: Size: 128, 772.597 MB/s
NEON: Size: 128, 398.923 MB/s
CLIB: Size: 128, 567.769 MB/s
DMAC: Size: 128, 2.051 MB/s

NEWL: Size: 129, 453.963 MB/s
NEON: Size: 129, 442.532 MB/s
CLIB: Size: 129, 634.144 MB/s
DMAC: Size: 129, 2.018 MB/s

NEWL: Size: 256, 856.634 MB/s
NEON: Size: 256, 565.140 MB/s
CLIB: Size: 256, 579.906 MB/s
DMAC: Size: 256, 3.961 MB/s

NEWL: Size: 512, 819.264 MB/s
NEON: Size: 512, 596.921 MB/s
CLIB: Size: 512, 761.749 MB/s
DMAC: Size: 512, 7.798 MB/s

NEWL: Size: 999, 1087.581 MB/s
NEON: Size: 999, 572.548 MB/s
CLIB: Size: 999, 799.933 MB/s
DMAC: Size: 999, 14.831 MB/s

NEWL: Size: 1024, 1116.071 MB/s
NEON: Size: 1024, 585.469 MB/s
CLIB: Size: 1024, 864.215 MB/s
DMAC: Size: 1024, 15.201 MB/s

NEWL: Size: 9999, 1208.132 MB/s
NEON: Size: 9999, 611.151 MB/s
CLIB: Size: 9999, 1013.368 MB/s
DMAC: Size: 9999, 98.497 MB/s

NEWL: Size: 12288, 1201.553 MB/s
NEON: Size: 12288, 520.926 MB/s
CLIB: Size: 12288, 1027.690 MB/s
DMAC: Size: 12288, 113.082 MB/s

NEWL: Size: 33792, 1071.682 MB/s
NEON: Size: 33792, 616.918 MB/s
CLIB: Size: 33792, 1022.546 MB/s
DMAC: Size: 33792, 176.003 MB/s

NEWL: Size: 67584, 524.867 MB/s
NEON: Size: 67584, 618.457 MB/s
CLIB: Size: 67584, 834.345 MB/s
DMAC: Size: 67584, 214.112 MB/s

NEWL: Size: 99999, 498.750 MB/s
NEON: Size: 99999, 618.853 MB/s
CLIB: Size: 99999, 803.100 MB/s
DMAC: Size: 99999, 225.233 MB/s

NEWL: Size: 101376, 499.670 MB/s
NEON: Size: 101376, 618.663 MB/s
CLIB: Size: 101376, 803.174 MB/s
DMAC: Size: 101376, 231.169 MB/s

NEWL: Size: 1022976, 306.809 MB/s
NEON: Size: 1022976, 474.933 MB/s
CLIB: Size: 1022976, 541.987 MB/s
DMAC: Size: 1022976, 155.845 MB/s

NEWL: Size: 32768, 1162.747 MB/s
NEON: Size: 32768, 523.512 MB/s
CLIB: Size: 32768, 998.785 MB/s
DMAC: Size: 32768, 172.518 MB/s

NEWL: Size: 65536, 528.989 MB/s
NEON: Size: 65536, 522.868 MB/s
CLIB: Size: 65536, 794.458 MB/s
DMAC: Size: 65536, 211.389 MB/s

NEWL: Size: 131072, 489.846 MB/s
NEON: Size: 131072, 522.289 MB/s
CLIB: Size: 131072, 726.922 MB/s
DMAC: Size: 131072, 232.543 MB/s

NEWL: Size: 262144, 491.806 MB/s
NEON: Size: 262144, 522.865 MB/s
CLIB: Size: 262144, 690.743 MB/s
DMAC: Size: 262144, 238.815 MB/s
 
NEWL: Size: 524288, 486.066 MB/s
NEON: Size: 524288, 521.880 MB/s
CLIB: Size: 524288, 677.409 MB/s
DMAC: Size: 524288, 212.723 MB/s

NEWL: Size: 1048576, 280.244 MB/s
NEON: Size: 1048576, 424.129 MB/s
CLIB: Size: 1048576, 486.518 MB/s
DMAC: Size: 1048576, 153.973 MB/s


UNCACHED->UNCACHED:
Code: [Select]

NEWL: Size: 4096, 91.644 MB/s
NEON: Size: 4096, 84.192 MB/s
CLIB: Size: 4096, 85.183 MB/s
DMAC: Size: 4096, 60.824 MB/s

NEWL: Size: 8192, 87.461 MB/s
NEON: Size: 8192, 70.497 MB/s
CLIB: Size: 8192, 72.443 MB/s
DMAC: Size: 8192, 113.425 MB/s
 
NEWL: Size: 16384, 87.576 MB/s
NEON: Size: 16384, 70.508 MB/s
CLIB: Size: 16384, 72.504 MB/s
DMAC: Size: 16384, 196.885 MB/s

NEWL: Size: 32768, 87.942 MB/s
NEON: Size: 32768, 70.513 MB/s
CLIB: Size: 32768, 72.474 MB/s
DMAC: Size: 32768, 314.995 MB/s

NEWL: Size: 65536, 88.532 MB/s
NEON: Size: 65536, 70.526 MB/s
CLIB: Size: 65536, 72.442 MB/s
DMAC: Size: 65536, 465.924 MB/s

NEWL: Size: 1048576, 88.152 MB/s
NEON: Size: 1048576, 70.532 MB/s
CLIB: Size: 1048576, 74.386 MB/s
DMAC: Size: 1048576, 845.234 MB/s


CACHED->UNCACHED:
Code: [Select]

NEWL: Size: 4096, 665.687 MB/s
NEON: Size: 4096, 453.740 MB/s
CLIB: Size: 4096, 564.161 MB/s
DMAC: Size: 4096, 52.868 MB/s

NEWL: Size: 8192, 732.949 MB/s
NEON: Size: 8192, 510.121 MB/s
CLIB: Size: 8192, 578.789 MB/s
DMAC: Size: 8192, 91.490 MB/s

NEWL: Size: 16384, 775.781 MB/s
NEON: Size: 16384, 507.404 MB/s
CLIB: Size: 16384, 476.764 MB/s
DMAC: Size: 16384, 121.830 MB/s

NEWL: Size: 32768, 784.132 MB/s
NEON: Size: 32768, 495.175 MB/s
CLIB: Size: 32768, 595.261 MB/s
DMAC: Size: 32768, 194.350 MB/s

NEWL: Size: 65536, 533.454 MB/s
NEON: Size: 65536, 488.072 MB/s
CLIB: Size: 65536, 549.678 MB/s
DMAC: Size: 65536, 263.349 MB/s

NEWL: Size: 1048576, 487.270 MB/s
NEON: Size: 1048576, 466.946 MB/s
CLIB: Size: 1048576, 587.348 MB/s
DMAC: Size: 1048576, 274.829 MB/s


(The code blocks are scrollable.)

Clib and Libc are similar in speed.

done by isage using https://github.com/isage/vita-memtest
A text version is attached to the post for your convenience.

Offline Graphene

  • Useful Idiot
  • ***
  • Posts: 108
    • View Profile
Here is the visual representation of the tests, done by isage:

1B -> 2KB, 1B step:
https://sarcasticat.com/memtest/2kb.html

8B -> 512B, 1B step, 512B->8MB, 1023B step
https://sarcasticat.com/memtest/8mb.html