Страницы: Пред. 1 2
RSS
Отметить адрес если на него приходятся разные имена
 
Обидно, что мой вариант на коллекции и массиве такой медленный получился. Скорее всего я выбрал не самый оптимальный алгоритм проверки ))
 
Цитата
Wild.Godlike: вечером уже протестирую
вот вам всё готовое и с комментариями, только отпишитесь - можно попытаться прикрутить другой сортер  ;)
PRDX: КОД на встроенном сортере

Юрий М, приветствую! В вашем варианте, как я понял, не обошлось без двойного цикла, что УЖЕ даёт n^2 сравнений вместо n в одном и том же цикле. Nordheim, сравнивает через Dictionary.Exist, я сравниваю со строкой - так мы уходим от этого ^2… А коллекции…ни в строку сцепить через Join, ни наличие проверить)))
ну и, конечно, On Error Resume Next надо из цикла вытащить и включить всего 1 раз - перед циклом. Выключить - после цикла.
Nordheim+PRDX: словарь (без сортировки)
сравнивайте - даже интересно, что будет шустрее)
Изменено: Jack Famous - 17.05.2019 15:43:09
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Получилось пораньше). Воть затестил на 506161 строке.

P.S. вот уж не думал что тема вызовет такой интерес)
Изменено: Wild.Godlike - 17.05.2019 16:28:38
 
Wild.Godlike, то есть исходник от Nordheim работает 2 секунды, а мои понты 5 - 5,5 минут???  8-0
Цитата
Wild.Godlike: не думал что тема вызовет такой интерес
я люблю такие штуки - замените конф. данные и дайте самому потестить — что вам жалко?))
Изменено: Jack Famous - 17.05.2019 16:46:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Тогда уж попробуйте ещё вариант на уникальных элементах (из модели данных) + ВПР. Быстрее PQ, но до макроса не дотягивает
 
Jack Famous, Постораюсь сделать для вас исходник без данных.)))) только это наверное завтра будет если до берусь до рабочего компа или уже в понедельник ) И вы не поверите наверное но вариант от :
Dark1589, сделал 3 раза... заняло по времени каждый раз около 1минуты)

P.S.
Цитата
Jack Famous написал:
то есть исходник от  Nordheim  работает 2 секунды
VBA вообще не моё) если бы у Nordheim отображалось бы время как у вас. тоже скриншоты скинул бы) потому что мне кажется иногда даже меньшее 2сек...
Изменено: Wild.Godlike - 17.05.2019 17:39:58
 
Цитата
Wild.Godlike: если бы у Nordheim отображалось бы время
я не про доли секунды ,а про разницу в 100 раз))) для этого счётчик не нужен. Что ж - жду полный файл…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, получилось сегодня:) скинул сылку на гуглдиск в личку) только там уже 600000 строк :) Напишите потом сюда результаты)
 
Wild.Godlike, добро  ;)
Изменено: Jack Famous - 17.05.2019 19:32:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Wild.Godlike написал:
скинул сылку на гуглдиск в личку)
а можно мне тоже?)
 
Цитата
Jack Famous написал:
и, конечно, On Error Resume Next надо из цикла вытащить
Нет у меня никакого On Error Resume Next ))
Если диапазон сортирован по адресам, то нужно выходить досрочно из цикла, а я гоняю до конца.  
 
Цитата
Wild.Godlike написал:
если бы у Nordheim отображалось бы время как у вас.
Пожалуйста.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Юрий М: Нет у меня
давайте разбираться  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Так это в коллекции ))  
 
OFF
Юрий М, а это что-то меняет?)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Нет. Я просто забыл про это ) Но не думаю, что именно этот момент самый критичный. Причина в том, что я каждый раз перебираю ВЕСЬ массив до конца.
 
Wild.Godlike, пока что тесты говорят, что сортер (при нынешней реализации) в данном случае не нужен:
КОД
в файле итоги сравнения на листе "START". Есть ещё парочка идей, конечно, но вариант от Nordheim рулит — факт  :D
Изменено: Jack Famous - 18.05.2019 19:23:32
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Андрей Лящук, Скинул вам тоже в личку :)
Jack Famous, А можно вас попросить убрать сылку на файл :) чтобы "малоли что" ) и поисковики не проиндексировали )
 
Удалил ссылку.
 
Цитата
Юрий М: я каждый раз перебираю ВЕСЬ массив до конца
ну тут да — без вариантов))

Wild.Godlike, исправил вариант с сортировкой. Поиск по НАСТОЛЬКО длинной строке съедал 99% всего времени. Замена InStr на Like ухудшила ситуацию, преобразование в байты не особо помогло, а RegExp я не решился даже пробовать. Если у кого есть идеи, то я бы послушал…

Чтобы выровнять условия (из-за сортировочного метода). Добавлен перенос данных "Begin" с указанного листа (в данном случае только лист "COPY". У автора есть ещё лист с оригинальными данными — также на 600к строк). Вставка итогового массива "End" также вынесена отдельно.

Метод PRDX NoSort практически полностью повторяет метод от Nordheim, кроме пары незначительных "шлифовок". Пробовал различные ещё "накруты", но выигрыша не получил…

ORIGINAL data (601к строк исходных данных):
1. Теперь все 3 работают примерно одно время и отличием в пределах 0,5 секунды
2. Главный процесс «MAIN»выполняется порядка 3,5 секунд

COPY data (ровно 600к строк перемешанных  и раскопированных данных из примера):
1. Проигрыш сортировки в 3,5 раза (на 3,5 сек) из-за структуры данных

Коды и тестовый стенд
Файл с COPY-данными на DropMe

Я бы всё-таки делал с сортировкой, т.к. в отсортированном массиве потом намного быстрее/проще/удобнее делать абсолютно всё (посмотрите на скрине, что после самой сортировки, получение данных сильно ускоряется), тем более, что на оригинальной структуре, она, даже немного выигрывает.
Изменено: Jack Famous - 19.05.2019 12:10:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Wild.Godlike написал:
А можно вас попросить убрать сылку на файл
Я один раз уже удалил ))
 
Новый отчёт
Сортировка на основе рекурсивной функции отсюда по скорости проигрывает "штатной". Вывод - штатная сортировка написана крайне толково  :D Выиграть у 2х словарей всё-равно не вышло…
Изменено: Jack Famous - 24.05.2019 14:02:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: Пред. 1 2
Наверх