childNodes foreach vs children (direct) vs firstChild nextSibling vs firstElementChild nextElementChild vs ChildNodes for (into variable) vs children-- (direct) vs ChildNodes for-- (into variable) vs ChildNodes for-- (direct) vs lastElementChild previousElementChild vs children-- (into variable)Fastest: firstElementChild nextElementChild (9.5x faster)
9,235,367 ops/sec
8,606,398 ops/sec
6,399,250 ops/sec
4,780,996 ops/sec
3,088,043 ops/sec
2,595,681 ops/sec
2,284,672 ops/sec
1,375,901 ops/sec
1,274,656 ops/sec
968,719 ops/sec
Fastest: firstElementChild nextElementChild (14.2x faster)
48,043,380 ops/sec
45,576,992 ops/sec
22,137,484 ops/sec
11,370,601 ops/sec
8,896,792 ops/sec
6,044,884 ops/sec
5,613,930 ops/sec
5,037,688 ops/sec
4,171,763 ops/sec
3,375,417 ops/sec
Results show median performance across all community submissions. Run this benchmark yourself to verify on your device.
| Test case name | Result |
|---|---|
| childNodes foreach | |
| children (direct) | |
| firstChild nextSibling | |
| firstElementChild nextElementChild | |
| ChildNodes for (into variable) | |
| children-- (direct) | |
| ChildNodes for-- (into variable) | |
| ChildNodes for-- (direct) | |
| lastElementChild previousElementChild | |
| children-- (into variable) |
| Test name | Executions per second |
|---|---|
| ✓ firstElementChild nextElementChild | 15,355,374 Ops/sec |
| lastElementChild previousElementChild | 14,529,700 Ops/sec |
| children-- (into variable) | 8,430,285 Ops/sec |
| firstChild nextSibling | 7,216,320 Ops/sec |
| ChildNodes for-- (direct) | 4,044,752 Ops/sec |
| children-- (direct) | 4,030,267 Ops/sec |
| ChildNodes for (into variable) | 3,468,432 Ops/sec |
| children (direct) | 2,427,461 Ops/sec |
| ChildNodes for-- (into variable) | 2,267,155 Ops/sec |
| childNodes foreach | 1,336,437 Ops/sec |