Низкая скорость выполнения только при первом запуске
Я тут заметил одну вещь. Когда я написал какой либо кусок кода. Какой либо алгоритм. Он в первый запуск в браузере выполняется 30мс - сколько угодно мс. Но при всех запусках после этого запуска отображает 1мс, 2мс, 0мс.
Вот код который создаёт массив рандомных чисел и сортирует его пузырьком. let array = []; for(let i = 0; i < 100; i++) { array.push(Math.floor(Math.random() * 100)); } let last = array.length; let start = Date.now(); for(let i = 0; i < last;) { let left = i; let right = i+1; if(array[left] > array[right]) { let buff = array[left]; array[left] = array[right]; array[right] = buff; } i = i + 1; if(i == last-1) { last--; i = 0; } } let end = Date.now(); console.log(`Массив отсортирован за ${end - start} миллисекунд`) Я думаю мой код не очень хороший. Я только начинающий. Если кто то есть большие проблемы то поправьте если не сложно:) |
macsik12,
можно так измерить продолжительность https://developer.mozilla.org/ru/docs/Web/API/Console let array = []; for(let i = 0; i < 100; i++) { array.push(Math.floor(Math.random() * 100)); } let last = array.length; console.time('sort'); for(let i = 0; i < last;) { let left = i; let right = i+1; if(array[left] > array[right]) { let buff = array[left]; array[left] = array[right]; array[right] = buff; } i = i + 1; if(i == last-1) { last--; i = 0; } } console.timeEnd('sort'); |
macsik12,
можно так делать обмен содержимого ячеек, но это более затратно( для тех, кто считает 2ms слишком много, чем 1ms :) ) let array = []; for(let i = 0; i < 100; i++) { array.push(Math.floor(Math.random() * 100)); } let last = array.length; console.time('sort'); for(let i = 0; i < last;) { let left = i; let right = i+1; if(array[left] > array[right]) [array[left], array[right]] = [array[right], array[left]]; i = i + 1; if(i == last-1) { last--; i = 0; } } console.timeEnd('sort'); console.log(array) |
Спасибо :)
|
Часовой пояс GMT +3, время: 16:49. |