Benchmark Alokasi Memori Mac dan Windows

14.106.***.***
8

Saya mengonversi kode C dan C++ yang dibuat dengan Visual Studio 2026 ke Xcode.. dan yang mengejutkan, char16_t dan char32_t ternyata tidak mendukung std::format dari C++20.. Astaga..

Ternyata std::format untuk char16_t dan char32_t adalah dukungan ekstensi khusus Visual Studio 2026.. ㅠㅠ

Saya menghapus semua kode terkait, minta bantuan AI untuk mengonversinya, lalu berhasil menjalankan aplikasi konsol Windows di terminal macOS.

Saya mencoba menerapkan custom memory allocator sesuai spesifikasi PMR dari C++20 ke berbagai kontainer seperti vector dan list, lalu menjalankan benchmark performa dibandingkan dengan malloc dari C.. hasilnya hampir sama atau sedikit lebih lambat.. secara keseluruhan performanya kurang lebih setara.

Mulai dari C++20, tersedia dukungan untuk dua jenis memory pool: yang menggunakan lock untuk sinkronisasi thread, dan yang tidak menggunakan lock. Memory pool dengan lock memang agak lambat-_-;

Karena diimplementasikan dengan mutex, prosesnya harus masuk ke kernel lalu kembali lagi.. Saya mencoba mengimplementasikannya dengan spinlock dan memang sedikit lebih cepat, tapi spinlock pun kadang bisa lebih lambat jika tidak beruntung, jadi hasilnya masih ambigu.

Meski begitu, ada keuntungan bisa menggunakan memory pool secara standar tanpa perlu menginstal Boost, dan dengan menambahkan kata kunci final pada custom allocator serta menjalankan kode tanpa melalui vtable sebisa mungkin.. tampaknya sudah cukup cepat untuk digunakan pada game rendering engine atau game server.

Senang karena berjalan lancar di Mac.

Malloc sudah dioptimalkan sebaik mungkin sehingga kecepatannya memang luar biasa, tapi jika program berjalan dalam waktu lama dan terus melakukan alokasi dinamis, ada kemungkinan terjadi fragmentasi heap pada prosesor yang menyebabkan penurunan performa, cache miss, dan berbagai hal tidak menyenangkan lainnya bahkan pada OS modern. Dengan selisih performa sekecil itu, menggunakan memory pool PMR dari C++20 bukan pilihan yang buruk.

Untuk Mac

Untuk Windows

Windows menggunakan Ryzen 5950X..

Mac menggunakan M5 Pro.

Pada dasarnya angka-angka tersebut sudah ditangani oleh caching internal malloc, jadi benchmark ini tidak terlalu bermakna..

Anggap saja sebagai gambaran kasar perbedaan antara PMR dan malloc.

Ini bukan malloc dan free yang dilakukan sekaligus secara bersamaan, melainkan malloc semua terlebih dahulu baru kemudian free..

Jadi ini bukan sekadar memasukkan dan mengeluarkan secara sembarangan. Karena ini adalah alokasi linear, performa nyata saat program berjalan

dengan alokasi ukuran acak pada waktu acak tidaklah tercermin sepenuhnya, tapi silakan gunakan sebagai referensi saja.

로그인한 회원만 댓글 등록이 가능합니다.

개발한당

KR | ID | EN
  • IDR
  • KOR
8.34 -0.01

2026.07.10 KEB 하나은행 고시회차 1177회

다가오는 한인 행사일정

  • 등록 된 일정이 없어요!