Skip to content

Instantly share code, notes, and snippets.

@igorlukanin
Created December 11, 2017 13:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igorlukanin/e9d71242e92037982d8e071fb591e8f9 to your computer and use it in GitHub Desktop.
Save igorlukanin/e9d71242e92037982d8e071fb591e8f9 to your computer and use it in GitHub Desktop.
JS Collections Access Benchmark
const Benchmark = require('benchmark')
const start = 2
const end = 5
const suite = new Benchmark.Suite
for (var i = start; i <= end; i++) {
const n = Math.pow(10, i)
suite.add(`n = ${n}`, () => addByNumWithDefineProperty(n))
}
suite.on('complete', function() {
for (var i = 0; i <= end - start; i++) {
console.log(`${this[i].stats.mean}`)
}
})
.run({
async: true,
maxTime: 1
})
const addByStringWithDefineProperty = n => {
var c = {}
var descriptor = { value: 1 }
for (var i = 0; i < n; i++) {
Object.defineProperty(c, i.toString(), descriptor)
}
}
const addByStringWithDefineProperty2 = n => {
var c = {}
var descriptor = { value: 1 }
for (var i = 0; i < n; i++) {
Object.defineProperty(c, "a" + i.toString(), descriptor)
}
}
const addByNumWithDefineProperty = n => {
var c = {}
var descriptor = { value: 1 }
for (var i = 0; i < n; i++) {
Object.defineProperty(c, i, descriptor)
}
}
const addByStringKeys2 = n => {
var c = {}
for (var i = 0; i < n; i++) {
c[`a${i}`] = 1
}
}
const addByStringKeys = n => {
var c = {}
for (var i = 0; i < n; i++) {
c[i.toString()] = 1
}
}
const addByNumKeys = n => {
var c = {}
for (var i = 0; i < n; i++) {
c[i] = 1
}
}
const push = n => {
var c = []
for (var i = 0; i < n; i++) {
c.push(1)
}
}
const concatToEnd = n => {
var s = "";
for (var i = 0; i < N; i++)
{
s = s + ("" + i);
}
return s;
}
const concatToStart = n => {
var s = ""
for (var i = 0; i < n; i++) {
s = ("" + i) + s
}
}
const concatToBoth = n => {
var s = ""
for (var i = 0; i < n; i++) {
s = ("" + i) + s + ("" + i)
}
}
const multiplyString = (s, n) => {
var result = "";
for (var i = 0; i < n; i++)
{
result += s;
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment