Coder Social home page Coder Social logo

lhaussknecht / hash-table-shootout Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jimbelton/hash-table-shootout

0.0 1.0 0.0 1.37 MB

A benchmark of some prominent C/C++ hash table implementations

Makefile 3.18% Python 12.73% HTML 64.63% C++ 5.32% C 14.14%

hash-table-shootout's Introduction

Hash Table Shootout

A series of benchmarks that run against several hash table implementations, written by Nick Welch in 2010. Updated in 2015 by Jim Belton.

Release Notes

2015-11-26

  • Fixed a bug whereby all C++ implementations where hashing pointer values rather than strings
  • Vastly sped up benchmarks from hours to minutes
  • Simplified standard output from benchmarks
  • Added kjv-bench.py which benchmarks each hash table implementation by counting the unique words in the King James version of the bible.

How to Run the Benchmarks

First, some prerequisites are:

  • make (~3.81)
  • gcc/g++ (~4.8.2)
  • python (hard-coded for 2.7 -- edit Makefile to use another version)
  • ruby (hard-coded for 1.9.1 -- edit Makefile to use another version)

Install the hash libraries:

  1. Install glib by running: sudo apt-get install libglib2.0-dev
  2. Install boost by running: sudo apt-get install libboost-all-dev
  3. Install google sparsehash: sudo apt-get install libsparsehash-dev
  4. Install qt dev by running: sudo apt-get install qtbase5-dev
  5. Install python dev; run: sudo apt-get install python-dev
  6. Install ruby dev; run: sudo apt-get install ruby-dev

Now, run:

$ make
$ python bench.py # Note: This step takes many minutes.
$ python make_chart_data.py < output | python make_html.py
$ python kjv-bench.py # Runs the new KJV benchmark against all the implementations (fast)

Your charts are now in charts.html.

Tweaks and Tips

You can tweak some of the values in bench.py to make it run faster at the expense of less granular data, and you might need to tweak some of the tickSize settings in charts-template.html.

To run the benchmark at the highest priority possible, do this:

$ sudo nice -n-20 ionice -c1 -n0 sudo -u $USER python bench.py

You might also want to disable any swap files/partitions so that swapping doesn't influence performance. The programs will die if they try to allocate too much memory.

Copyright Information

Originally written by Nick Welch in 2010. Updated and enhanced by Jim Belton in 2015. This version is copyright by Jim Belton and licensed under the MIT License

hash-table-shootout's People

Contributors

jimbelton avatar mackstann avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.