Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2020, 21:31
Новичок на форуме
Отправить личное сообщение для macsik12 Посмотреть профиль Найти все сообщения от macsik12
 
Регистрация: 08.04.2020
Сообщений: 2

Низкая скорость выполнения только при первом запуске
Я тут заметил одну вещь. Когда я написал какой либо кусок кода. Какой либо алгоритм. Он в первый запуск в браузере выполняется 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, 08.04.2020 в 21:37.
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2020, 22:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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');
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2020, 22:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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)
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2020, 12:53
Новичок на форуме
Отправить личное сообщение для macsik12 Посмотреть профиль Найти все сообщения от macsik12
 
Регистрация: 08.04.2020
Сообщений: 2

Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить функцию при запуске увидеть ГЛОБАЛЬНУЮ переменную? возжаждавший Элементы интерфейса 8 23.02.2017 01:27
Загрузка элемента при фокусе и не только login18 Events/DOM/Window 5 10.12.2010 18:40
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Dojo может подгружать информацию из пунктов меню только при клике на выбранный пункт? vlad275 Dojo toolkit 0 30.10.2008 15:56
При первом клике список не раскрывается. lancer Элементы интерфейса 1 30.03.2008 17:24