JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 7
  • Score
    100M100P100Q53824F
  • License MIT

Fast search substrings in a string by using N-API and boyer-moore-magiclen.

Package Exports

  • fast-string-search

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fast-string-search) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Fast String Search

Introduction

This module can search substrings in a string by using N-API and boyer-moore-magiclen. The result of benchmark shows that this module is 10 times faster than the indexOf function of a Node.js string.

NOTICE: N-API is a new experimental feature in Node.js 8. Currently, it can be used by adding --napi-modules option when executing Node.js 8.

Installation

Run npm i or npm install to install.

npm install fast-string-search

If you want to save this module to package.json, please add --save option.

npm install fast-string-search --save

Initialization

Import this module by using require function.

const fss = require('fast-string-search');

Usage

indexOf

Full text search in a string.

var a = fss.indexOf('coocoocoocoo', 'oocoo'); // [1, 4, 7]

You can also set the offset of characters and the number of substrings you want to find.

var a = fss.indexOf(source, pattern, offset, limit);

The default value of offset is 0, and the default value of limit is 1000.

indexOfSkip

Normal text search in a string.

var a = fss.indexOfSkip('coocoocoocoo', 'oocoo'); // [1, 7]

lastIndexOf

Full text search from the end of a string.

var a = fss.lastIndexOf('coocoocoocoo', 'oocoo'); // [7, 4, 1]

utf16IndexOf/utf16IndexOfSkip/utf16LastIndexOf

var a = fss.utf16IndexOf(Buffer.from('coocoocoocoo', 'utf16le'), Buffer.from('oocoo', 'utf16le')); // [1, 4, 7]

Tests

To run the test suite, first install the dependencies, then run npm test:

npm install
npm test

Benchmark

To run the benchmark suite, first install the dependencies, then run npm run benchmark:

npm install
npm run benchmark

Here is my result,

Full Text Search
  - 87 milliseconds
  ✓ natively search text(indexOf) (87ms)
  - 7 milliseconds
  ✓ Use FSS to search text

Normal Text Search
  - 35 milliseconds
  ✓ natively search text(indexOf)
  - 46 milliseconds
  ✓ natively search text(RegExp) (46ms)
  - 6 milliseconds
  ✓ Use FSS to search text

License

MIT