Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 25.12.2013, 16:17
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Какая жизненная тема оказалась!
Ответить с цитированием
  #32 (permalink)  
Старый 26.12.2013, 21:39
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от okouser
3) когда достаточно найти лишь вхождение одного элемента из подмассива.
Новый Вариант №3. Хорошая тема,
var a1 = [2, 5, 2, 4, 5, 11, 5, 9, 9];
var a2 = [2, 7, 8, 6, 1, 1];
var a3 = [3, 1];
var a4 = [5];

alert(isValueInArray(a1, a2));
alert(isValueInArray(a1, a3));
alert(isValueInArray(a1, a4));

function isValueInArray(a1, a2) {

    var i = 0,
        j = 0,
        sl, el,
        l1 = a1.length,
        l2 = a2.length,
        len = l1 % 8,
        slen = Math.floor(l1 / 8);

    for (; i < l2; j = 0) {
        
        el = a2[i++];
      
        for (; 0 < len; len--) {
            if (el == a1[j++]) return true;
        }

        for (sl = slen; 0 < sl; sl--) {
            if (
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++] ||
                el == a1[j++])
                return true;
        }

    }
    return false;
}

Последний раз редактировалось Vlasenko Fedor, 27.12.2013 в 04:03.
Ответить с цитированием
  #33 (permalink)  
Старый 27.12.2013, 03:53
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Спасибо за ссылку плюсанул
http://jsperf.com/isvalueinarray
не знал, что while на 25% медленный
и по ходу на больших массивах for впереди

Последний раз редактировалось Vlasenko Fedor, 27.12.2013 в 04:32.
Ответить с цитированием
  #34 (permalink)  
Старый 27.12.2013, 04:39
Аспирант
Отправить личное сообщение для Antonius Посмотреть профиль Найти все сообщения от Antonius
 
Регистрация: 30.11.2013
Сообщений: 42

Poznakomlus,
Я правильно понимаю, что основная идея такой оптимизации лежит в сокращении количества итераций цикла за счет проверки группами?

Не уверен что правильно разобрал алгоритм.
Ответить с цитированием
  #35 (permalink)  
Старый 27.12.2013, 04:51
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Устройство Даффа,
но увы, это не приносит эффекта а еще и усугубляет
цикл фор рулит
Ответить с цитированием
  #36 (permalink)  
Старый 27.12.2013, 05:06
Аспирант
Отправить личное сообщение для Antonius Посмотреть профиль Найти все сообщения от Antonius
 
Регистрация: 30.11.2013
Сообщений: 42

Так, что-то сегодня или со мной, или не знаю с чем.

Уже второй раз сначала получаю неправильные результаты замеров производительности. Когда впервые запустил пример кода по вашей ссылке, получилось, что оптимизированный вариант был почти вдвое быстрее. Теперь не пойму, куда я смотрел или что это было.

А запись исходной реализации на C после долгого отсутствия практики на нем взрывает мозг.

Последний раз редактировалось Antonius, 27.12.2013 в 05:11.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подчинить себе цикл wreder jQuery 17 20.11.2013 22:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
Нужен цикл для создания огромного массива apish Общие вопросы Javascript 2 20.09.2012 16:10
JS Перебор ассоциативного многомерного массива zbs2000 Events/DOM/Window 8 23.07.2012 01:23
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22