|
const ITEM = Math.PI |
|
|
|
const input = new Array(2000000).fill(ITEM) |
|
|
|
Deno.bench({group: "grow", baseline: true}, function deque_grow(timer) { |
|
const deque = new Deque() |
|
for (let i = 0; i < 1000; ++i) deque.pushBack(ITEM) |
|
|
|
timer.start() |
|
for (let i = 0; i < 20; ++i) { |
|
let old_len = deque.len |
|
for (let j = 0; j < old_len / 2; ++j) deque.popFront() |
|
for (let j = 0; j < old_len; ++j) deque.pushBack(ITEM) |
|
} |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "grow"}, function denque_grow(timer) { |
|
const denque = new Denque() |
|
for (let i = 0; i < 1000; ++i) denque.push(ITEM) |
|
|
|
timer.start() |
|
for (let i = 0; i < 20; ++i) { |
|
let old_len = denque.length |
|
for (let j = 0; j < old_len / 2; ++j) denque.shift() |
|
for (let j = 0; j < old_len; ++j) denque.push(ITEM) |
|
} |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "clear", baseline: true}, function deque_clear(timer) { |
|
const deque = new Deque(input) |
|
|
|
timer.start() |
|
while (deque.len > 0) deque.popFront() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "clear"}, function denque_clear(timer) { |
|
const denque = new Denque(input) |
|
|
|
timer.start() |
|
while (denque.length > 0) denque.shift() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "shift", baseline: true}, function deque_shift(timer) { |
|
const deque = new Deque(input) |
|
|
|
timer.start() |
|
for (let i = 0; i < 1000000; ++i) { |
|
const a = deque.popFront() |
|
const b = deque.popFront() |
|
const c = deque.popFront() |
|
|
|
deque.pushBack(a) |
|
deque.pushBack(b) |
|
deque.pushBack(c) |
|
} |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "shift"}, function denque_shift(timer) { |
|
const denque = new Denque(input) |
|
|
|
timer.start() |
|
for (let i = 0; i < 1000000; ++i) { |
|
const a = denque.shift() |
|
const b = denque.shift() |
|
const c = denque.shift() |
|
|
|
denque.push(a) |
|
denque.push(b) |
|
denque.push(c) |
|
} |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "fromArray", baseline: true}, function deque_fromarray(timer) { |
|
timer.start() |
|
new Deque(input) |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "fromArray"}, function denque_fromarray(timer) { |
|
timer.start() |
|
new Denque(input) |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray1", baseline: true}, function deque_toarray1(timer) { |
|
const deque = new Deque(input) |
|
|
|
timer.start() |
|
deque.toArray() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray1"}, function denque_toarray1(timer) { |
|
const denque = new Denque(input) |
|
|
|
timer.start() |
|
denque.toArray() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray2", baseline: true}, function deque_toarray2(timer) { |
|
const deque = new Deque(input) |
|
const power2 = 1 << (32 - Math.clz32(input.length)) |
|
const extra = power2 - input.length / 2 |
|
|
|
for (let i = 0; i < extra; ++i) deque.pushBack(ITEM) |
|
for (let i = 0; i < extra; ++i) deque.popFront() |
|
|
|
timer.start() |
|
deque.toArray() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray2"}, function denque_toarray2(timer) { |
|
const denque = new Denque(input) |
|
const power2 = 1 << (32 - Math.clz32(input.length)) |
|
const extra = power2 - input.length / 2 |
|
|
|
for (let i = 0; i < extra; ++i) denque.push(ITEM) |
|
for (let i = 0; i < extra; ++i) denque.shift() |
|
|
|
timer.start() |
|
denque.toArray() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray3", baseline: true}, function deque_toarray3(timer) { |
|
const deque = new Deque(input) |
|
const power2 = 1 << (32 - Math.clz32(input.length)) |
|
const extra = power2 - input.length / 2 |
|
|
|
for (let i = 0; i < extra; ++i) deque.pushBack(deque.popFront()) |
|
|
|
timer.start() |
|
deque.toArray() |
|
timer.end() |
|
}) |
|
|
|
Deno.bench({group: "toArray3"}, function denque_toarray3(timer) { |
|
const denque = new Denque(input) |
|
const power2 = 1 << (32 - Math.clz32(input.length)) |
|
const extra = power2 - input.length / 2 |
|
|
|
for (let i = 0; i < extra; ++i) denque.push(denque.shift()) |
|
|
|
timer.start() |
|
denque.toArray() |
|
timer.end() |
|
}) |