Latest Benchmarks

Browse the latest JavaScript performance benchmarks created by the community.

Observables: loops with try/catch versus EventTarget

When the “observable” pattern is implemented in JavaScript, it's practically always done using a loop over callbacks. One problem with this approach is that an exception in one handler will crash the entire loop. You can work around this by wrapping the invocation in a try/catch block, but in doing so, you silently swallow the error. The browser provides an event dispatcher for DOM elements that runs each handler in a separate execution context, providing a better failure mode for independent listeners. `EventTarget` is an interface, so you can't directly instantiate one. But you can hijack the `EventTarget` implementation from a dummy object. This test compares multi-listener dispatches using loops and the built-in `EventTarget`. My expectation is that the native mechanism will carry some overhead, partly because of the bespoke execution context, and partly because of the extra properties instantiated on each `CustomEvent` instance. This method also has to look up events by their (string) names, rather than using direct object reference. See http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/

function versus const arrow function

No description provided

string comparison test localeCompare

No description provided

double-bang-vs-boolean-cast-multiple-types

!!x vs Boolean(x)

fromEntries vs reduce fight!

No description provided

2D to 1D Test

No description provided

Benchmark Reduce vs Concat vs Join

No description provided

Benchmark Reduce vs Concat

No description provided

push vs length as filter (2)

No description provided

push vs length as filter

No description provided

push vs length

No description provided

Array combination by destructuring vs concat()

Test how a couple of succesive object array concatenations perform.

Destructuring array iterator vs array iterator keys

No description provided

Mapping a ranged value array v1

Creates objects based on a specific range of values, to be used as values within the mapped object.

Ranged array mapping

No description provided

JS Proxy vs Getter - Actual

No description provided

JS Proxy vs Getter

No description provided

innerHTML vs replaceChildren to empty an element

No description provided

Map -> Array

No description provided

set vs array add 1k items

No description provided

set has vs array includes (1k items)

No description provided

Intl.NumberFormat vs Intl.NumberFormat-memo

No description provided

'==' vs test

benchmark to know performance of equating with '==' vs test method

qweqweqweqwe

No description provided

function vs Class_

No description provided