Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.10.2020, 15:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Nexus
К тому же имеет, скорее всего, до двух тысяч элементов.
Ну и какие тут проблемы с перебором?
Я приводил пример - суммирование 10 000 000 элементов массива занимает 20 мс.
https://javascript.ru/forum/530002-post6.html
Ответить с цитированием
  #12 (permalink)  
Старый 31.10.2020, 16:04
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

Сообщение от voraa
Ну и какие тут проблемы с перебором?
А с чего вы взяли, что я вижу тут какие-то проблемы?
Ответить с цитированием
  #13 (permalink)  
Старый 31.10.2020, 17:06
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от voraa
Ну и какие тут проблемы с перебором?
Автор жалуется, что медленно
Правда, в его случае используется map, то есть лишние расходы, но тем не менее.
Ответить с цитированием
  #14 (permalink)  
Старый 31.10.2020, 18:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Я даже не представляю, что там может быть долго?
Вот тест.
100 раз выполняется просмотр массива из 10 000 элементов для поиска одинаковых

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" >
  <title>TEST SPEED</title>

<style>
</style>
</head>

<body id="body"  >
<script>
const r = (m) => Math.random()*m | 0;
const colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'];
const ar = [];
const l = 10_000;
for (let i = 0; i < l; i++) ar.push ({color: colors[r(colors.length)], data: r(10)});
const nc = 100;

let findsame = (a, key) => {
    const res = [];
    for (let i=0; i<a.length; i++) {
        if (key.color === a[i].color && key.data === a[i].data) res.push(i);        
    }
    return res
}

const t0 = performance.now();
for (ic = 0; ic < nc; ic++) {
    const key = {color: colors[r(colors.length)], data: r(10)};
    const res = findsame(ar, key);
//    console.log(ic, res);
}
const dt = (performance.now()-t0)/1000;

alert(` Time: ${dt} seconds`);
</script>

</body>
</html>


У меня получается 6-8 мс на ноуте (довольно мощный) и 50-60 мс на не слишком навороченном смартфоне.

Последний раз редактировалось voraa, 31.10.2020 в 19:26.
Ответить с цитированием
  #15 (permalink)  
Старый 31.10.2020, 18:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от voraa
Последний раз редактировалось voraa, Сегодня в 18:42.
Еще раз отредактировать, вставлен текст i &lt; l;
Ответить с цитированием
  #16 (permalink)  
Старый 31.10.2020, 18:56
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от laimas
Еще раз отредактировать, вставлен текст i &lt; l;
Вот именно это я и редактировал.
Ничего не помогает.
Когда перехожу в режим редактирования там < стоит. Ну меняю < на <. Толку нет.
Но ошибок не выдает и при раскомментаренном console.log(ic, res); результаты выдает, хотя время, конечно, другое.

Последний раз редактировалось voraa, 31.10.2020 в 18:58.
Ответить с цитированием
  #17 (permalink)  
Старый 31.10.2020, 19:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Нифига себе, происки империалистов, сейчас попробуем. )

var a = b < c;


const r = (m) => Math.random()*m | 0;
const colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'];
const ar = [];
const l = 10_000;
for (let i = 0; i < l; i++) ar.push ({color: colors[r(colors.length)], data: r(10)});
const nc = 100;
 
let findsame = (a, key) => {
    const res = [];
    for (let i=0; i<a.length; i++) {
        if (key.color === a[i].color && key.data === a[i].data) res.push(i);       
    }
    return res
}
 
const t0 = performance.now();
for (ic = 0; ic < nc; ic++) {
    const key = {color: colors[r(colors.length)], data: r(10)};
    const res = findsame(ar, key);
//    console.log(ic, res);
}
const dt = (performance.now()-t0)/1000;
 
alert(` Time: ${dt} seconds`);


Нет проблем, скопировал - текст в коде, заменил - все норма. У вас клавиша < на клавиатуре решила, что так лучше будет

Последний раз редактировалось laimas, 31.10.2020 в 19:19.
Ответить с цитированием
  #18 (permalink)  
Старый 31.10.2020, 19:27
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от laimas
У вас клавиша < на клавиатуре решила, что так лучше будет
Причем только 1 раз из трех.
Да хрен с ней лишь бы работало.

Сообщение от laimas
скопировал - текст в коде,
Вот это интересно. Когда я копирую текст из кода, у меня &lt; стоит

Последний раз редактировалось voraa, 31.10.2020 в 19:30.
Ответить с цитированием
  #19 (permalink)  
Старый 31.10.2020, 19:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от voraa
Причем только 1 раз из трех.
Еще и с чувством меры, значит.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов массива Всемогущий Общие вопросы Javascript 4 26.11.2019 17:28
Перебор элементов массива и сравнение со значением TheSanches Общие вопросы Javascript 7 26.02.2018 19:54
javascript перебор ассоциативного массива shoopik Общие вопросы Javascript 3 18.08.2017 09:43
Перебор массива объектов JSON Sokoljr Общие вопросы Javascript 13 24.04.2017 13:59
Перебор массива - вложенный цикл SWin Общие вопросы Javascript 35 27.12.2013 05:06