TGViewer
melikhov.dev melikhov.dev @melikhov_dev · 4.74K subscribers
Post #202 2.56K
Так, не пишите тесты глубокой ночью ) Одна загадка с утра раскрылась, но стало ещё веселей. Действительно, для structuredClone и Object.assign я в цикле не выходил из мономорфности, потому что стрелял клонами, они имеют между собой одинаковую мапу


const objToCopy1 = { a: 1, b: 2 };
const objToCopy2 = { a: 1, b: 2 };
const N = 100;

for (let i = 0; i < N; i++) {
testFunction1(JSON.parse(JSON.stringify(objToCopy1)));
testFunction1(JSON.parse(JSON.stringify(objToCopy2)));

testFunction2({...objToCopy1})
testFunction2({...objToCopy2})

testFunction3(structuredClone(objToCopy1))
testFunction3(structuredClone(objToCopy2))
}


Но вот что интересно, при увеличении N testFunction2 падает в деоптимизацию, %HaveSameMap({...objToCopy1}, {...objToCopy2}) вываливается в false.

Можете сами попробовать


const objToCopy1 = { a: 1, b: 2 };
const objToCopy2 = { a: 1, b: 2 };
const N = 13;

for (let i = 0; i < N; i++) {
console.log(%HaveSameMap({...objToCopy1}, {...objToCopy2}))
}


В данном случае у меня на 13-й итерации (зависит от версии v8) мапы уже не равны.

gist чтобы погонять spread https://gist.github.com/melikhov-dev/51f92e84b7aa9456a4cdba0550130df7
Gist test-spread-deopts.js GitHub Gist: instantly share code, notes, and snippets.
  • 👍 5
More from @melikhov_dev
  1. Sep 27, 2026https://www.aymannadeem.com/artificial/intelligence,/developer/tools/2026/09/24/plan-mode-…
  2. Sep 26, 2026Блин, ну нравятся мне TUI решения, сил нет. Просто, красиво и понятно (для меня). Продолжа…
  3. Sep 13, 2026Какой он — личный харнес? Вот мы и пришли в точку, когда уже бизнес не устраивает медленна…
  4. Aug 30, 2026Разобрал своего питонячего новостного бота и собрал нового, уже на Гермесе. Ну как собрал…
  5. Aug 24, 2026Вы могли наверное заметить что как-то мало меня стало в последнее время. Не видно на конфе…
  6. Aug 6, 2026Как же хорошо перечитывается сейчас «Трилогия Муравейника» Гибсона (она же Sprawl trilogy)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →