Skip to content

Fuzzaldrin plus - fast using native c bindings

Notifications You must be signed in to change notification settings

rajendrant/fuzzaldrin-plus-fast

 
 

Repository files navigation

Build Status Build Status

What is fuzzaldrin-plus-fast ?

  • Fuzzaldrin plus is an awesome library that provides fuzzy search that is more targeted towards filenames.
  • Fuzzaldrin-plus-fast is a rewrite of the library in native c++ to make it fast. The goal is to make it a few hundred millisecond filter times for dataset with 1M entries. This performance is helpful in atom fuzzy finder to open files from large projects such as chrome/mozilla.

This project potentially solves the following Atom fuzzy-finder issues if used. atom/fuzzy-finder#271 atom/fuzzy-finder#88

How performance is improved ?

Fuzzaldrin-plus-fast achieves 10x-20x performance improvement over Fuzzaldrin plus for chromium project with 300K files. This performance is achieved using the following techniques.

  • Converting javascript/coffeescript code to native c++ bindings provides 4x performance benefit.
  • Use multiple threads to parellize computation to achieve another 4x performance benefit. Currently upto 8 threads are used if there are more than 10K candidates to filter.
  • Some miscellaneous improvements provide additioal benefit.

Is the API the same ?

API is backward compatible with Fuzzaldrin and Fuzzaldrin-plus. Additional functions are provided to achieve better performance that could suit your needs.

Info for Developers

How to release package to npmjs ?

  • Bump up version in package.json.
  • Create new release tag in github, for the bumped version. This should trigger builds in Travis CI, Appveyor and the following binaries will be uploaded to github.
  • Install prebuildify-ci to download prebuilt binaries from github releases
npm install -g prebuildify-ci
  • Download the prebuilt binaries from github and publish.
prebuildify-ci download
npm publish

About

Fuzzaldrin plus - fast using native c bindings

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CoffeeScript 43.4%
  • C++ 43.2%
  • JavaScript 12.9%
  • Python 0.5%