These are not scientific tests because they are carried out in an uncontrolled environment in a Web browser and on the command line, but they should give you a rough idea of the differences.
1,000,000 iterations
Lets look at one million iterations in a variety of forms:
- For loop with empty body
- .forEach on array with empty callback
- For loop summing the entries from an array
- Array.reduce summing the entries from an array
- .map on an array, just returning the entry
- Filling an Array with sequential numbers using a for loop and push
- Filling an Array with random numbers using Math.random and push
- Setting a pre-sized Array with sequential numbers using a for loop
- Setting a pre-sized Array with random numbers using Math.random
- Filling a Uint8Array with sequential numbers using a for loop
- Filling a Uint8Array with random numbers using Math.random
- Filling a Uint16Array with sequential numbers - 1 million bytes
- Filling a Uint16Array with sequential numbers - 1 million entries
- Filling a Uint32Array with sequential numbers - 1 million bytes
- Filling a Uint32Array with sequential numbers - 1 million entries
- Filling a Float16Array with sequential numbers - 1 million bytes
- Filling a Float16Array with sequential numbers - 1 million entries
- Filling a Float32Array with sequential numbers - 1 million bytes
- Filling a Float32Array with sequential numbers - 1 million entries
- Copying a Uint8Array using a for loop - 1 million bytes
- Copying a Uint16Array using a for loop - 1 million bytes
- Copying a Uint32Array using a for loop - 1 million bytes
- Copying a Float16Array using a for loop - 1 million bytes
- Copying a Float32Array using a for loop - 1 million bytes
- Copying a Uint8Array using constructor - 1 million bytes
- Copying a Uint16Array using constructor - 1 million bytes
- Copying a Uint32Array using constructor - 1 million bytes
- Copying a Float16Array using constructor - 1 million bytes
- Copying a Float32Array using constructor - 1 million bytes