Skip to content

aminya/typescript-optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TypeScript-optimization

Tests and benchmarks different codes in TypeScript for different JavaScript versions (ES5 vs ES6 and above).

Traditional for vs for-of vs for-in- Looping ovr Arrays

  • ES6 and above: traditional for is faster than for-of that is faster than for-in
  • ES5 and lower:Traditional for is similar to for-of and both faster than for-in.
// Traditional
  let sum = 0
  for (let i = 0, l = arr.length; i < l; ++i) {
    sum += arr[i]
  }

// for - of
  let sum = 0
  for (const a of arr) {
    sum += a
  }

// for - in
  let sum = 0
  for (const i in arr) {
    sum += arr[i]
  }
Benchmark-Result
ES2020:

for-traditional x 111,162 ops/sec ±0.16% (96 runs sampled)
for-of x 83,331 ops/sec ±0.15% (96 runs sampled)
for-in x 2,544 ops/sec ±0.86% (94 runs sampled)
Fastest is for-traditional

ES 6:

for-traditional x 110,622 ops/sec ±0.34% (95 runs sampled)
for-of x 83,102 ops/sec ±0.16% (94 runs sampled)
for-in x 2,521 ops/sec ±1.21% (94 runs sampled)
Fastest is for-traditional

ES5:

for-traditional x 110,584 ops/sec ±0.56% (95 runs sampled)
for-of x 110,395 ops/sec ±0.60% (98 runs sampled)
for-in x 2,604 ops/sec ±1.05% (95 runs sampled)
Fastest is for-traditional,for-of

Traditional for optimization

  • in all versions: all the codes are about the same.

Defining arr as const or let doesn't affect the speed.

// for-traditional
  let sum = 0
  for (let i = 0, l = arr.length; i < l; ++i) {
    sum += arr[i]
  }
// for-traditional-const
  let sum = 0
  const l = arr.length
  for (let i = 0; i < l; ++i) {
    sum += arr[i]
  }

// for-traditional-length-lookup
  let sum = 0
  for (let i = 0; i < arr.length; ++i) {
    sum += arr[i]
  }
Benchmark-Result
const arr

ES2020:

for-traditional x 111,107 ops/sec ±0.38% (97 runs sampled)
for-traditional-const x 111,392 ops/sec ±0.19% (98 runs sampled)
for-traditional-lookup x 111,242 ops/sec ±0.22% (95 runs sampled)
Fastest is for-traditional,for-traditional-const,for-traditional-length-lookup

ES 6:

for-traditional x 111,197 ops/sec ±0.18% (95 runs sampled)
for-traditional-const x 111,209 ops/sec ±0.18% (96 runs sampled)
for-traditional-lookup x 111,111 ops/sec ±0.13% (96 runs sampled)
Fastest is for-traditional,for-traditional-const,for-traditional-length-lookup

ES5:

for-traditional x 111,351 ops/sec ±0.17% (98 runs sampled)
for-traditional-const x 111,326 ops/sec ±0.15% (96 runs sampled)
for-traditional-lookup x 110,693 ops/sec ±0.42% (97 runs sampled)
Fastest is for-traditional

let arr:

 ES2020:

for-traditional x 111,310 ops/sec ±0.23% (93 runs sampled)
for-traditional-const x 111,201 ops/sec ±0.36% (96 runs sampled)
for-traditional-lookup x 111,430 ops/sec ±0.20% (99 runs sampled)
Fastest is for-traditional-length-lookup,for-traditional,for-traditional-const

ES5:

for-traditional x 110,594 ops/sec ±0.53% (94 runs sampled)
for-traditional-const x 111,455 ops/sec ±0.14% (97 runs sampled)
for-traditional-lookup x 111,463 ops/sec ±0.15% (96 runs sampled)
Fastest is for-traditional-const,for-traditional-length-lookup

About

Compares different for-loops in TypeScript/JavaScript

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Contributors 3

  •  
  •  
  •