Как JS соединяет значения в шаблонной строке?
let i = 20, s = document.body.style; s.top = `${i}px`; // или s.top = i + 'px' Во втором случае выполняется математическое сложение с проверкой типов и преобразованиями, верно? Но что происходит в первом случае? Предположу, что первый способ эффективнее по производительности, ведь вроде как не выполняем математических операций. Чему бы вы отдали предпочтение и почему? |
const obj = (function (size, iterations, tests) { console.log('BREAK THE MYTH ;p') const array = Array.from({ length: size }) const iterator = Array.from({ length: iterations }) const score = iterator.map(iter => tests.map(test => { const start = performance.now() test(array) const end = performance.now() return [start, end] })).reduce((acc, result) => { result.forEach(row => { row.forEach((r, i) => { acc[i] += r }) }) return acc }, Array(tests.length).fill(0)) console.log(`size: ${size}, iterations ${iterations}`) score.map((s, i) => console.log(`tests[${i}] : ${s}`)) })( 100000, 10, [ array => array.map((item, i) => `${i}myth`), array => array.map((item, i) => i + 'myth'), ], ) ну получается magic quotes продуктивнее ) в моем браузере... |
SuperZen,
а если строки 24 и 25 поменять местами? |
)) то не работает как ожидалось... напиши если есть время..
|
SuperZen,
Google Chrome, Firefox, последние, если менять очерёдность массивов, то массив, созданный первым, быстрее проходит тест, у меня так. |
tests[0] : 1307
tests[1] : 1413 |
Firefox Nightly 70 :
tests[0] : 14060 tests[1] : 14532 Chrome Canary 78 : tests[0] : 16188 tests[1] : 16988 Проверял на нетбуке. Если тест, составленный SuperZen, оптимален, то шаблы `` лучше. Вроде как performance.now() оценивает лучше ) |
Тоже проверил, поменял местами строки 24 и 25. Теперь всё наоборот. Что-то тут не так )
|
) хз, вот тут есть какие-то попугаи...
https://stackoverflow.com/questions/...83467#29083467 потом https://jsperf.com/es6-string-litera...-concatenation там кнопочка есть есть run tests ) и у меня сложение через конкатенацию работает быстрее... в целом, если операций +-1000 и таск запускается руками иногда, смысла не вижу в этом тесте) |
SuperZen, короче буду использовать то, что всплывёт первым ))
Всем спасибо! |
Часовой пояс GMT +3, время: 14:12. |