Code Monkey home page Code Monkey logo

c-rrb's People

Contributors

hypirion avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

c-rrb's Issues

Use Doxygen for generating documentation

I'd like to use Doxygen for documentation purposes. As I have never used Doxygen before, I'd be very happy if someone interested in contributing to this project and has used it before would like to set it up with me.

Documentation of internal functions

The essence of the algorithms manipulating the RRB-tree are described properly in my thesis, but is rather academic in nature and contains a lot of proofs.

The technicalities, however, aren't described as they are language-specific. To ease portability and understanding of the source, I'd like to add in proper explanation of each function, along with some comments on why things are done in the fashion they are. While I've tried to document some strange quirks, it's far from done.

Additionally, there's a big mismatch between development/master and experimental. Adding in some explanation on how experimental relates to development would be handy.

Use theft for property-based testing

Theft is a c library for property-based testing. Moving tests over from the current setup will give us shrinking capabilities, better random generation of RRB-trees, and consequently better coverage of corner cases.

Refactor debugging/visualisation functions

The functionality currently residing within rrb_debug.h has slowly evolved over time through what I needed for debugging, and is not really conforming to C calling conventions nor handling errors in a preferable way. These functions should be refactored to idiomatic C functions while retain the very "easy-to-use" functionality they have within lldb/gdb.

Should solve the issues mentioned in #1.

small addition to README

Hi,
maybe you can put a line for OSX users in the README file
as to what is required to build:

brew install boehmgc libtool

This was required on Mavericks,

Cheers
Jiri

Measure loop unroll performance

I have some ideas on how loop unrolling could be done very efficiently. However, that is purely theoretical and would require performance measurements.

The idea is as follows: In almost all cases, we know how many iteration steps there will be before the actual iteration is done. Additionally, the code for a trie walk is exactly the same, with the possible exception of the last step. Henceforth, loop unrolling can, with some macro tricks, be done as shown on the experimental branch.

There are some other tricks which can be used as well, for example fact that any subtrie not containing a size table will never have a child with a size table (this is where it gets messy).

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.