추가 메뉴

맥과 윈도우의 메모리 할당 벤치마크
비쥬얼씨뿔뿔

Lv.1 비쥬얼씨뿔뿔 (180.♡.243.82)

2026년 4월 26일 PM 11:02

조회 906 공감 0

비쥬얼 스튜디오 2026으로 작업한 c,cpp코드를 xcode로 컨버트 하는데.. 충격적이게도 char16_t와 char32_t가 c++20의 std::format을 지원 안하네요.. 두둥..

알고보니 char16_t와 char32_t의 std::format은 비쥬얼 스튜디오 2026의 확장 지원이더군요.. ㅠㅠ

관련코드 다 빼버리고 ai도움좀 받아서 컨버트하고 윈도우 콘솔앱을 맥os 터미널에서 돌렸습니다.

C++20의 pmr사양으로 커스텀 메모리 allocator와 vector와 list등등의 컨테이너들을 pmr사양에 적용하고 c의 malloc과 퍼포먼스 벤치마크를 돌려봤는데.. 비슷하거나 약간 느리거나 하고 .. 전체적으로는 비슷하네요.

C++20부터는 쓰레드 동기를 위한 락거는 메모리 풀과 락안거는 메모리풀 둘다 지원하는데요. 락거는 메모리 풀은 좀 느립니다-_-;

뮤텍스로 구현해놔서 커널로 갔다가 다시 오는 형식이라.. 스핀락으로 구현 해봤더니 좀더 빠르긴 한데.. 스핀락도 재수없으면 더느린 경우가 있어서 애매하군요.

그래도 메모리 풀을 boost안깔고 스탠다드로 이용할수 있는 장점이 있어서 커스텀 allocator에 final키워드 걸고 최대한 vtable 안거친 코드로 돌리니.. 충분히 게임 렌더링 엔진이나 게임서버에서 쓸만한 속도가 나오는것 같습니다.

맥에서 잘돌아가니 좋네요.

Malloc은 이미 최적화 될만큼 되서 확실히 미친속도긴 한데.. 장기간 프로그램이 돌아가면서 동적할당을 계속 하게 되면 프로세서 힙의 단편화로 인해서 속도 저하 캐시 히트 실패 등등 현대os에서도 불행한 일이 발생할 확률이 있으니 이정도 속도 차이면 c++20의 pmr 메모리 풀을 쓰는것도 나쁘지 않네요.

맥용

윈도우용

윈도우는 라이젠5950x이고..

맥은 m5 pro입니다.

어짜피 저정도는 malloc내에서 캐싱 처리 되서 크게 의미둘 벤치마크는 아니고..

그냥 대략 pmr과 malloc과의 차이 정도만 보면 될것 같습니다.

malloc과 free를 동시에 한큐에 하는 것이 아닌 malloc다 한뒤에 free한거라..

넣다 뺐다 식의 아주 엉터리는 아니고요. 선형 할당이라 실제로 프로그램 돌렸을때

랜덤 타이밍에 랜덤 사이즈로 할당 했을때 만큼의 실 성능은 아니지만 참고용으로만 보면 될것 같아요.

댓글 (2)

  • LG워시타워

    LG워시타워 Lv.1

    04.27 · 118.♡.73.153

    안녕하새요~ 좋은말씀 드리 rust 왔습니다~ 어머~ 인상이 선하시네요~

  • 비쥬얼씨뿔뿔

    비쥬얼씨뿔뿔 Lv.1 → LG워시타워 작성자

    04.27 · 121.♡.94.55

    으앜... 러스트 신도다!!! 돔황쳐!!

    농담입니다. ㅋㅋ

댓글을 작성하려면 이 필요합니다.