Inline Cache

function test(){
	const a = { name: 'a' }
	const b = { name: 'b' }
	const c = { name: 'c' }
	const d = { name: 'd' }
	const e = { name: 'e' }
  const arr = [a,b,c,d,e]
  const getName = (obj) => obj.name;
  for (var i = 0; i < 1000; i++) {
      getName(arr[i & arr.length-1]);
  }
}
test()
function test(){
	const a = { name: 'a', address: 'a' }
	const b = { name: 'b', go: 'b' }
	const c = { name: 'c', apple: 'pie' }
	const d = { name: 'd', phone: 'number' }
	const e = { name: 'e' }
  const arr = [a,b,c,d,e]
  const getName = (obj) => obj.name;
  for (var i = 0; i < 1000; i++) {
      getName(arr[i & arr.length-1]);
  }
}
test()

๊ทธ๋ฆผ์—์„œ ๋ณด๋Š” ๊ฑฐ์™€ ๊ฐ™์ด 23ํผ๋‚˜ ๋А๋ฆฌ๋‹ค

---

์ธ๋ผ์ธ ์บ์‹ฑ์˜ ์ƒํƒœ

  • UNINITIALIZED(0)

  • PREMONOMORPHIC(1) - 1๋ฒˆ์งธ ์ ‘๊ทผ

  • MONOMORPHIC(1) - 2๋ฒˆ์งธ ์ ‘๊ทผ

  • 3๋ฒˆ์งธ ์ ‘๊ทผ (cache hit)

  • POLYMORPHIC(P) - ๋‹ค๋ฅธ Shape(Hidden Class)๊ฐ€ ์ ‘๊ทผํ•  ๊ฒฝ์šฐ. 4๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅ.

  • MEGAMORPHIC(N) - ์ตœ๋Œ€ 4๊ฐœ ์บ์‹œ ๊ฐ€๋Šฅ.

http://www.egocube.pe.kr/lecture/content/html-javascript/202003240001arrow-up-right

Last updated