Coder Social home page Coder Social logo

stringsearch's Introduction

suffixsearch

Build Status

A collection of SACAs (suffix array construction algorithms) and other methods of indexing and searching for substrings in all suffixes of a given input.

Crates

  • divsufsort is Rust version of Yuta Mori's libdivsufsort, ported by hand
  • cdivsfusort is Yuta Mori's original libdivsufsort, built with the cc crate
  • divsuftest is a test executable that allows comparing against the above crates.
  • dc3 is a naive work-in-progress implementation of DC3 (Differential Cover, v=3)

See the crates' README files for more information on their status, expected performance and licensing.

stringsearch's People

Contributors

fasterthanlime avatar killercup avatar

Stargazers

 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

stringsearch's Issues

`divsufsort` useful for `bsdiff`. (Not an issue, just a note.)

Today I learned about the bsdiff and bspatch, by Colin Percival. His description is in his https://www.daemonology.net/papers/bsdiff.pdf.

He has an old page that summarizes how it's been useful for various OS distributions here and here's a man page.

There were some Rust ports some time ago. I picked up bsdiff-rs.

I found the bsdiff inventor/author had become an important contributor to FreeBSD and wondered how his bsdiff was used by FreeBSD now. Turns out around 2016, they swapped out an initial call to a hand written qsufsort with the Google developed divsufsort claiming it was much faster.

Found your port of the library to rust, dropped it into a local bsdiff-rs and can confirm it is much much faster. On 4MB rust binaries I tested, bsdiff times dropped from 1.1s to 0.3s. Same binary source difference algorithm, just a different way to create the suffix array that it uses. Amazing.

Thanks for the hand port and all that fuzz testing!

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.