C++ - 라이브러리를 사용한 프로그램 고속화

tcmalloc, jemalloc, nedmalloc

  • malloc 대체에 의한 고속화.
  • 아래와 같이 실행함으로써 malloc이 대체되어 실행된다.
  • LD_PRELOAD=/usr/lib/libtcmalloc.so ./exefile

상황에 따라 다르겠지만 tcmalloc이 제일 좋은 듯.

google::dense_hash_map

  • tcmalloc에 이어 google 라이브러리가로 Hash Map을 사용할 때의 고속화이다.
  • 아래 링크에 다양한 Hash Map을 이용했을 때의 벤치 마크 테스트 결과가 있지만 실행 시간에서 꽤 빠르다.
    http://incise.org/hash-table-benchmarks.html

생성자 호출 후에 empty_key를 설정할 필요가 있고, 무효한 키를 만들기 어려울 때는 사용하기 어렵다.

Boost::fast_pool_allocator

  • Allocator를 메모리 풀을 이용하게 해서 고속화 하는 방법이다.
std::vector<int, boost::fast_pool_allocator<int>> v;

SIMD

  • Intrinsic 명령이라는 사용 방법도 있지만 용도에 맞추어 SIMD 대응의 라이브러리를 사용하면 편리하다.
  • Eigen 행렬 연산 라이브러리
  • Boost.SIMD SIMD 명령 추상화
  • Libsimdpp
  • [Vc] (https://github.com/VcDevel/Vc )




출처: http://qiita.com/neka-nat@github/items/3cddc63123680a69dfeb


이 글은 2018-09-06에 작성되었습니다.