Skip to content

timothyklim/ulib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

------------------------
 About the ULIB Library
------------------------
The ulib library strives to provide efficient implementations of data
structures and algorithms for C and C++. It particularly focuses on
those frequently used items, such as hash tables, binary trees,
sorting algorithms, search algorithms, bitmaps, cryptographic hash
functions, and etc. It also offers some featured items such as the
Bloom filters, random number generators, command-line interpreter, and
a MapReduce framework that fully harnesses the power of multicores.

The current implementation of the ulib exhibits several performance
benefits over state-of-the-art. For example, the ulib's aligned hash
map outstrips a number of other popular ones in search, insertion as
well as memory consumption. Another example was based on my original
observation that the chained hash map with region locks supersedes
many lock-free ones in performance. This is further explained on the
wiki:http://code.google.com/p/ulib/wiki/LocksCanMakeSense.

The ulib project is based on several research projects of mine as well
as some other popular open source projects such as the Linux Kernel.

The project website provides more information about this project:
http://code.google.com/p/ulib.

---------------------------
 How to Build This Library
---------------------------
Use 'make' to build the entire library. After that you will have the
headers reside under the include/ and static libraries under the
lib/. Alternatively, you can perform 'make release' to strip the
debugging information.

--------------------------------
 An Overview of the Source Tree
--------------------------------
.
|-- include                  -- output headers for the library
|-- lib                      -- output static libraries
|-- perf                     -- performance benchmarks
|   |-- avl                  -- AVL tree performance
|   |   |-- libavl
|   |   |-- solaris
|   |   `-- ulib
|   |-- hashmap              -- hash map performance
|   |   `-- result
|   `-- mapreduce            -- MapReduce framework performance
|-- src
|   |-- base                 -- core items
|   |-- ext1                 -- extended items
|   |   |-- bloom_filter
|   |   |-- c++              -- C++ containers and wrapper classes
|   |   |-- comb             -- combinatorics enumerator
|   |   |-- console          -- command-line interpreter
|   |   `-- rng              -- various RNG's
|   `-- ext2                 -- advanced items
|       |-- mapreduce        -- MapReduce framework
|       |-- osdep            -- OS dependent items
|       |-- reentrant        -- thread-safe items
|       `-- thread           -- thread and scheduling primitives
`-- test                     -- tests for everything

----------------------
  The Version Number
----------------------
A sample version number may look like "a.b.c", which consists of three
parts. 'a' is the major version for the library, identifying the
design or interface. b is the minor version that represents the
change of features. And, c is used to denote the bug fixes.

Releases

No releases published

Packages

No packages published

Languages