sqmicro-commons
Version:
Commons for SQ analytics microservices.
35 lines (27 loc) • 750 B
JavaScript
const { Throttled } = require('../');
class Counter extends Throttled(Object) {
get stats() {
return {
expected: this.throttleLevel,
actual: (100 * (1 - this.counter / this.size)).toFixed(2)
};
}
constructor(l, n) {
super();
this.counter = 0;
this.size = n;
this.throttleLevel = l;
this.throttledMembers = 'count';
}
count() {
this.counter++;
}
}
const L = 32;
const N = 1000000;
const counter = new Counter(L, N);
for (let i = 0; i < N; i++) {
counter.count();
}
console.log(`Number of tries: ${N}`);
console.log(`Expected about ${counter.stats.expected}% of calls to be skipped, actually skipped: ${counter.stats.actual}%`);