Object iteration

Benchmark created on


Description

asdf

Setup

const profilesArray = new Array(1000).fill({
    "id": "kedogzdhep8uxbezoe7nm4ya1r",
    "create_at": 1684130335069,
    "update_at": 1710862310709,
    "delete_at": 0,
    "username": "an.a.khokhlova",
    "auth_data": "",
    "auth_service": "",
    "email": "an.a.khokhlova@tinkoff.ru",
    "nickname": "an.a.khokhlova",
    "first_name": "Anastasiya",
    "last_name": "Khokhlova",
    "phone": "",
    "position": "",
    "roles": "system_user",
    "props": {
        "customStatus": "{\"emoji\":\"desert_island\",\"text\":\"18-31.03 в отпуске. По ТЦР Новосибирск - к @n.manzhosova, по CnB - к @k.samolyuk\",\"duration\":\"date_and_time\",\"expires_at\":\"2024-03-31T16:30:00Z\"}"
    },
    "last_picture_update": 1702281767786,
    "locale": "ru",
    "timezone": {
        "automaticTimezone": "Asia/Bangkok",
        "manualTimezone": "",
        "useAutomaticTimezone": "true"
    },
    "external_id": "602139",
    "disable_welcome_email": false
})

const profiles = profilesArray.reduce((res, item) => {
	res[item.id] = item;
	
	return res;
}, {})

const userIds = new Set();

Test runner

Ready to run.

Testing in
TestOps/sec
Object.keys
Object.keys(profiles).forEach(p => userIds.add(p.id))
ready
for..in
for (const profileId in profiles) {
	userIds.add(profiles[profileId].id)
}
ready
Object.entries
Object.entries(profiles).forEach((res) => {
	userIds.add(res[0])
})
ready
for
const profileKeys = Object.keys(profiles);

for (let i = 0; i < profileKeys.length; i++) {
   userIds.add(profiles[profileKeys[i]].id)
}
ready
while
var keys = Object.keys(profiles), 
i = keys.length;

while(--i) {
   userIds.add(profiles[keys[i]].id)
}
ready
for of
for (const [id, profile] of Object.entries(profiles)) {
  userIds.add(id)
}
ready

Revisions

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