Низкая скорость выполнения только при первом запуске
Я тут заметил одну вещь. Когда я написал какой либо кусок кода. Какой либо алгоритм. Он в первый запуск в браузере выполняется 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, время: 08:24. |