Skip to content
/ ulib Public

Automatically exported from code.google.com/p/ulib

Notifications You must be signed in to change notification settings

nsholmes/ulib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The goal of this project is to provide extremely efficient
 implementations of some fundamental data structures and
 algorithms. The interface of each component has been made general and
 self-explanatory, one can grasp the usage by looking at the header of
 the component. I've implemented most of the components and the rest
 were ported from other open-source projects, such as the Linux
 kernel, of which all credits go the original authors.

    Main Features
        An extremely efficient open addressing hash table, comparable
        or even better performance than STL hashmap, Google
        sparse/dense hash, EASTL hashmap and RDESTL hashmap.
        A chaining hash table, corner stone for building concurrent
        hash tables.
        A concurrent hash table based on the chaining hash
        table. Significantly faster (~30%) than several popular ones,
        e.g., TBB(http://threadingbuildingblocks.org),
        nbds(http://code.google.com/p/nbds/) and Visual Studio
        2012. LocksCanMakeSense provides some analysis.
        The fast-hash hash function
        http://fast-hash.googlecode.com. Efficient and robust general
        purpose hash function.
        A set of robust, efficient, and invertible integer hash
        functions.
        Heap and heapsort. Improved performance than STL.
        A text binary search algorithm.
        A robust O(n) median algorithm.
        Various random number generators, e.g. Zipf RNG, Normal RNG,
        and Gamma RNG.
        General AVL and Splay trees. Faster than Solaris Kernel AVL
        and libavl.
        Bit tricks.
        Cryptographic algorithms. 

    Parallel Programming
        MapReduce framework for multicores.
        A set of scalable locks.
        Atomic primitives for x86_64. 

    Update History
        08/01/2013
            Added a patch to the SVN trunk. This patch fixes a
        segmentation fault raised in the sort() method of
        hash_chain. This issue only occurs when it is complied by
        certain buggy GCCs. If you have the hash_chain tests failed
        due to segmentation fault, please consider applying this
        patch. 
        Start from the version 2.0.0 beta, the ulib library targets
        only x86_64 architecture. In other words, newer versions may
        not compile/work on other architectures. 

    Performance
        Test codes can be located under perf/. 
        Hash table performance AlignedHashingPerformance.
        AVL tree performance AVLPerformance.
        Analysis of FastHash http://code.google.com/p/fast-hash/. 

    Core Items
        bfilter.{h,c}: the Bloom filter
        bitmap.{h,c}: generic bitmap
        crypt_aes.{h,c}: the AES crypt
        crypt_md5.{h,c}: the MD5 algorithm
        crypt_rc4.{h,c}: the RC4 crypt
        crypt_sha1.{h,c}: the SHA1 algorithm
        crypt_sha256.{h,c}: the SHA256 algorithm
        hash_open.h: C++ containers for the open addressing hashmap
        and hashset
        hash_open_prot.h: prototypes for the open addressing hashmap
        and hashset
        hash_chain.h: C++ container for the chain hashmap
        hash_chain_prot.h: prototype for the chain hashmap
        hash_func.{h,c}: hash functions
        heap_prot.h: generic heap prototype
        list.h: doubly linked list, can be used to implement queue and
        stack
        math_bit.h: bit operations
        math_bn.{h,c}: big number arithmetics
        math_comb.{h,c}: combinatorics enumerator
        math_factorial.{h,c}: factorial approximations
        math_gcd.{h,c}: Euclidean and the Extended Euclidean GCD
        algorithms
        math_lcm.{h,c}: the least common multiple
        math_rand_prot.h: pseudo-random number generators, mix
        functions, and etc
        math_rng_gamma.{h,c}: gamma distribution RNG
        math_rng_normal.{h,c}: normal distribution RNG
        math_rng_zipf.{h,c}: Zipf distribution RNG
        search_line.{h,c}: binary search for the text lines
        sort_heap_prot.h: prototype for the heapsort
        sort_list.{h,c}: list sort
        sort_median_prot.h: prototype for the median algorithm
        str_util.{h,c}: parallel/supplementary string utilities
        tree.{h,c}: various binary search trees
        tree_util.{h,c}: tree utilities
        ulib_ver.{h,c}: ulib version
        util_algo.h: basic algorithms
        util_console.{h,c}: command-line parser
        util_hexdump: the hexdump utilities
        util_log.h: logging utilities
        util_timer.h: high-precision timer 

    Parallel Items
        hash_chain_r.h: concurrent chain hashmap
        hash_multi_r.h: concurrent multiple hashmap
        mr_dataset.{h,cpp}: the MapReduce data abstraction
        mr_engine.h: the MapReduce engine
        mr_interm.h: the MapReduce intermediate storage abstraction
        os_atomic_intel64.h: atomic operations for the x86_64
        os_rdtsc.h: the Intel rdtsc instruction
        os_regionlock.h: region locks
        os_spinlock.h: various spinlocks for the x86_64
        os_thread.{h,cpp}: thread wrapper class
        os_typelock.h: typed locks for C++ 

About

Automatically exported from code.google.com/p/ulib

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages