techfort / LokiJS

javascript embeddable / in-memory database
http:/techfort.github.io/LokiJS
MIT License
6.74k stars 482 forks source link

Pretty slow while removing one-by-one #908

Open qiangbro opened 2 years ago

qiangbro commented 2 years ago

i have a real time system, i need to add/remove items one-by-one from the db, here's my example:

    let t;

    let alarms = [];
    for (let i = 0; i < 10000; i++) {
        alarms.push({id: i, name: 'hello' + i});
    }

    let db = new loki('exampleDB');
    let alarmCollection = db.addCollection('myAlarms', {indices: ['id']});

    console.log(`开始插入。。。`)
    t = Date.now();
    alarms.forEach(obj => alarmCollection.insert(obj));
    console.log(`完成插入 耗时${(Date.now() - t) / 1000}s alarmCollection.count=${alarmCollection.count()}`);

    console.log('开始删除 size=' + alarms.length)
    t = Date.now();
    alarms.forEach(obj => alarmCollection.findAndRemove({id: obj.id}));
    console.log(`完成删除 耗时${(Date.now() - t) / 1000}s, alarmCollection.count=${alarmCollection.count()}`);

result:

开始插入。。。
完成插入 耗时0.011s alarmCollection.count=10000
开始删除 size=10000
完成删除 耗时2.731s, alarmCollection.count=0

as we can see, it took pretty much time to remove items from the collection one by one.

Any idea to improve the performance for removing one-by-one?

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.