Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.02.2014, 21:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var arr = [],
arrLng = 6000,
out=[];
 for (var i = 0; i < arrLng; i++) {
     arr.push(parseInt(Math.random()*arrLng))
 }


//====== Deff =========
var st = +new Date(),
bound = ',';
out=[];
var tststr = bound + arr.join(bound+bound) + bound;
 for (var i = 0; i < arr.length; i++) {
     var t = bound +arr[i] + bound;
     if(tststr.indexOf(t)==tststr.lastIndexOf(t))out.push(arr[i])
 }
var work = +new Date()-st;
alert('Deff ='+work+'\n\n'+out)


//===== danik ==========
var st = +new Date();
out=[];
for (var i = 0; i < arr.length; i++) {
    var item = arr[i];
    if (arr.indexOf(item, i + 1) === -1 && (i === 0 || arr.lastIndexOf(item, i - 1) === -1))
        out.push(item);
}
var work = +new Date()-st;
alert('danik ='+work+'\n\n'+out)


//===== рони ==========
var st = +new Date();
out=[];
arr.sort(function (a, b) {
return a - b;
});
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
if (item != arr[i - 1] && arr[i + 1] != item)
out.push(item);
}
var work = +new Date()-st;
alert('рони ='+work+'\n\n'+out)


В Опере 12.6 и Ие быстрее первая метода, в Хроме и Мозилле - вторая

Последний раз редактировалось Deff, 19.02.2014 в 23:37.
Ответить с цитированием
  #22 (permalink)  
Старый 19.02.2014, 22:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Deff, обновил твой вариант у себя в тесте. Все-равно твой код самый медленный.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #23 (permalink)  
Старый 19.02.2014, 22:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Deff
и Ие
Ты серьзено?
Ну да ладно, из-за академического интереса ради, разве что.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #24 (permalink)  
Старый 19.02.2014, 22:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Deff
Ие
А какой ие? Мерил в 10м - там твой вариант все равно медленней, процентов на 30%
А в опере да, быстрей, но там разница в считанные проценты. Вобще, опера тормозит жутко.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #25 (permalink)  
Старый 19.02.2014, 22:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Походу в WEBkit работа с массивами уже переведена на аппаратный уровень
Ответить с цитированием
  #26 (permalink)  
Старый 19.02.2014, 22:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от danik.js
Deff, обновил твой вариант у себя в тесте. Все-равно твой код самый медленный.
1. Твой тест не сильно валидный, ибо см у меня, я начальные установки все Вынес за пределы измерений, либо нужно делать достаточно длинный массив, чтоб установка стартовых условий мало влияла

И чот твой тест (пост 9) у меня из топика не запускается
================================================
И вообще, по сравнению с рони, мы все в жопе.. (правдо меняется порядок элементов, хотя наверно и при восстановлении старого порядка следования всё одно выиграет

Последний раз редактировалось Deff, 19.02.2014 в 22:44.
Ответить с цитированием
  #27 (permalink)  
Старый 19.02.2014, 23:11
Аватар для Дзен-трансгуманист
√₋̅₁̅
Отправить личное сообщение для Дзен-трансгуманист Посмотреть профиль Найти все сообщения от Дзен-трансгуманист
 
Регистрация: 18.06.2012
Сообщений: 385

Сообщение от Deff
по сравнению с рони, мы все в жопе


Сообщение от danik.js
Дзен-трансгуманист (danik.js edition): 1519.000ms
Дзен-трансгуманист: 380.000ms
Вероятно, твой вариант медленнее из-за преобразования чисел в строку.


А вообще, прикольно видеть, когда на такую, казалось бы, простую задачку возникает целая куча решений.
Коллективный мозговой штурм - это и для ума полезно, и для души приятно.
__________________

Гейзенберг, возможно, читал этот тред.

Последний раз редактировалось Дзен-трансгуманист, 19.02.2014 в 23:17.
Ответить с цитированием
  #28 (permalink)  
Старый 19.02.2014, 23:15
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ксать поправил начальные условия в своём тесте , походу всех обогнал ?
Гы, нашел , где лажа

Последний раз редактировалось Deff, 19.02.2014 в 23:18.
Ответить с цитированием
  #29 (permalink)  
Старый 19.02.2014, 23:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Deff, с какой это стати не учитываешь время на создание строки?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #30 (permalink)  
Старый 19.02.2014, 23:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Дзен-трансгуманист
Вероятно, твой вариант медленнее из-за преобразования чисел в строку.
Да, собственно делал нечто подобное, во время появления Опера v12.54, тогда было быстрее во всех браузерах
теперь походу в в WEBkit работа с массивами уже переведена на аппаратный уровень
В опере 12.6 и сейчас чуть быстрее danik.js

Последний раз редактировалось Deff, 19.02.2014 в 23:29.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена элементов массива элементами массива prostoix Javascript под браузер 4 24.10.2013 17:36
Вывод случайных элементов из массива в таблицу Narm0 Общие вопросы Javascript 10 06.08.2013 12:39
Определить количество отрицательных элементов массива Тип_1 Общие вопросы Javascript 3 25.06.2012 18:24
Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов Ирина Владимировна Общие вопросы Javascript 10 24.03.2012 18:18
поиск одинаковых значений элементов массива Valstor Общие вопросы Javascript 20 09.12.2011 18:56