Summing with filters or counts

Benchmark created on


Setup

const ticketItems = (new Array(2000)).fill().map(() => ({ overrideSeatingObjectId: Math.random() > 0.5, seatLocked: Math.random() > 0.5 }))

Test runner

Ready to run.

Testing in
TestOps/sec
Count
    let availableSeatCount = ticketItems.length
    let autoSeatedCount = 0
    let manuallySeatedCount = 0
    let unseatedCount = 0
    ticketItems?.forEach(({ overrideSeatingObjectId, seatLocked }) => {
      if (!overrideSeatingObjectId) {
        unseatedCount = unseatedCount + 1
        return
      }
      availableSeatCount = availableSeatCount - 1
      if (seatLocked) {
        manuallySeatedCount = manuallySeatedCount + 1
      } else {
        autoSeatedCount = autoSeatedCount + 1
      }
    })
ready
Filter
a = {
      autoSeatedSeats: ticketItems?.filter(
        (ticketItem) => ticketItem.overrideSeatingObjectId && !ticketItem.seatLocked,
      )?.length,
      manuallySeatedSeats: ticketItems?.filter(
        (ticketItem) => ticketItem.overrideSeatingObjectId && ticketItem.seatLocked,
      )?.length,
      guestsLeftToSeat: ticketItems?.filter(
        (ticketItem) => ticketItem.overrideSeatingObjectId === null,
      )?.length,
 }
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.