muze-nl / jaqt

GraphQL-style Array.select() and Array.where() for javascript
MIT License
236 stars 9 forks source link

Request for benchmarks and comparison with alternatives #10

Open manueltarouca opened 1 month ago

manueltarouca commented 1 month ago

Hi, I was wondering if you have any benchmarks available that demonstrate jaqt performance, especially in comparison to lightweight databases like SQLite (when applicable). Since you mentioned that there are no speed improvements or indexes over normal Array.filter and Array.map, it would be helpful to see how jaqt performs in various e2e scenarios.

Thanks in advance.

poef commented 1 month ago

Sorry, no. JAQT is just a light wrapper around map/reduce/filter, so it's going to be close to the native speed of those functions. I have done some optimization to make sure that all JAQT functions do as little work possible inside the loop. There is still some optimization to be done for reduce though. I've tried to make sure that each function (where/select/groupBy/reduce) only 'visits' each object once, to make sure its using the cpu caches optimally. I do have an example of a project that uses JAQT internally, with a reasonably large dataset (imdb movie titles, about 680.000 objects). See https://github.com/SimplyEdit/simplystore-example-imdb for more information. Loading/starting takes a bit of time, since its also doing indexing at that point.

Potherca commented 1 month ago

@poef I think it wouldn't be too much work to make a first naive setup.

I've had some success with https://www.measurethat.net/ in the past, although that is pure client-side. But there are plenty of other choices, if needed.

I think the main question would be which alternatives, and which calls are comparable?