-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Labels
enhancementNew feature or requestNew feature or request
Description
I'm looking to switch to blinkdb for its typescript support, but when I benchmark indexed search, blinkdb comes out substantially slower than lokijs:
var Benchmark = require('benchmark')
const Loki = require('lokijs')
const { createDB, createTable } = require( "blinkdb")
const { internalInsertMany } = require('blinkdb/dist/core/insertMany')
const { internalFirst } = require('blinkdb/dist/core/first')
const items = require('./mock.json')
const blinkdb = createDB()
const blinktable = createTable(blinkdb, 'citekeys')({
primary: "id",
indexes: ["firstmail"],
});
internalInsertMany(blinktable, items)
const DB = new Loki('better-bibtex', {})
const coll = DB.addCollection('citekeys', {
indices: [ 'id', 'firstname' ],
unique: [ 'id' ],
})
coll.insert(items)
var suite = new Benchmark.Suite;
suite
.add('loki', function() { coll.findOne({ firstname: { $eq: `${Math.random()}` } }) })
.add('blink', function() { internalFirst(blinktable, { where: { firstname: `${Math.random()}` } }) })
.on('cycle', function(event) { console.log(String(event.target)) })
.on('complete', function() { console.log('Fastest is ' + this.filter('fastest').map('name')); })
.run();
(where mock.json has this content)
returns
loki x 1,466,141 ops/sec ±1.39% (84 runs sampled)
blink x 1,279 ops/sec ±1.49% (89 runs sampled)
and even when I turn off indexes in loki, it still comes out ahead:
loki x 18,342 ops/sec ±0.97% (95 runs sampled)
blink x 1,313 ops/sec ±1.29% (92 runs sampled)
Fastest is loki
I haven't tested more complex searches but search by single indexed field is something I'd be doing a fair bit of. Is this just not a good use-case for blinkdb?
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request