crdt.js
Version:
Conflict-Free Replicated Data Types JavaScript Library
44 lines (35 loc) • 950 B
JavaScript
// All supported Set CRDTs
import {GSet, TwoPSet, LWWSet, ORSet} from './src';
// Choose your weapon from ^
const SetCRDT = GSet
// State
let crdt = new SetCRDT()
// Metrics
let totalQueries = 0
let seconds = 0
let queriesPerSecond = 0
let lastTenSeconds = 0
const queryLoop = () => {
crdt.add(totalQueries)
totalQueries++
lastTenSeconds++
queriesPerSecond++
setImmediate(queryLoop)
}
let run = (() => {
console.log('Starting benchmark...')
// Output metrics at 1 second interval
setInterval(() => {
seconds++
if (seconds % 10 === 0) {
console.log(`--> Average of ${lastTenSeconds / 10} q/s in the last 10 seconds`)
if (lastTenSeconds === 0) throw new Error('Problems!')
lastTenSeconds = 0
}
console.log(`${queriesPerSecond} queries per second, ${totalQueries} queries in ${seconds} seconds`)
queriesPerSecond = 0
}, 1000)
setImmediate(queryLoop)
})()
export default run