1 poin oleh GN⁺ 2023-07-07 | 1 komentar | Bagikan ke WhatsApp
  • Artikel yang mengeksplorasi peluang optimasi loop kode C yang dihasilkan oleh Clang
  • Loop tersebut menambah atau mengurangi angka berdasarkan karakter dalam string.
  • Penulis menata ulang loop untuk mengoptimalkannya terhadap karakter 'p' dan 's', alih-alih terminator null.
  • Penulis menghapus percabangan kondisi dengan menggunakan aritmetika dan perpindahan kondisional.
  • Kode yang telah dioptimalkan mencapai peningkatan kecepatan yang signifikan, 6,73 kali lebih cepat dibandingkan kode asli.
  • Penulis juga mencoba teknik optimasi lain, tetapi menemukan bahwa teknik tersebut justru memperlambat kode.
  • Pengaturan benchmark mencakup CPU AMD Ryzen 5 5625U serta versi terbaru Clang dan GCC.
  • Kesimpulannya, pengerjaan manual dan optimasi di assembly dapat menghasilkan peningkatan kecepatan yang besar dalam kasus tertentu.

1 komentar

 
GN⁺ 2023-07-07
Komentar Hacker News
  • Kode aslinya dapat dioptimalkan dengan menggunakan pernyataan if alih-alih pernyataan switch.
  • Versi optimasi lain dari kode tersebut menggunakan instruksi sete/cmov tanpa percabangan dan dapat mencapai kecepatan yang sama dengan kode assembly yang sudah dioptimalkan.
  • Versi kode yang divektorkan mungkin bisa lebih cepat jika memungkinkan dengan menggunakan instruksi AVX-512.
  • Prosesor lain mungkin memiliki karakteristik performa yang berbeda tergantung pada percabangan.
  • Bahasa C pada awalnya dirancang agar kode tingkat sistem dapat dengan mudah diterjemahkan antarplatform, dan untuk itu mengorbankan beberapa fitur.