HLFX.Ru Forum
Показать все 9 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Сортировка массива строк ( больше 2 млн позиций ) (https://hlfx.ru/forum/showthread.php?threadid=5264)


Отправлено domded 17-05-2019 в 17:51:

Unhappy Сортировка массива строк ( больше 2 млн позиций )

Куку фсем кисям данного форума! Имею окала трёх миллионов строк разной длины ( имена файлов, записаны в блоки по пять мегабайт ( могу поменять их размер на какой угодно ) ). Из них нужно выбрать все записи с определённым расширением ( расширения храню в отдельной области памяти ). И тута у мну вообще моск вскипел ( хотя у мну ево и нет ). Как лучше и проще сделать за разумное время ( вообще не представляю, какое тут время может быть разумным )? Вычислять сначала хеши расширений, затем итерацией по каждй строке файлового блока вычислять налету хеши расширений файлов, и сравнивать уже их? Или в кокую сторону капать тута? Совсем запутолсо. Добролюди, памахити советом позязя! Фсем лафки чмафки авансом
З.Ы. Без использования баз данных, они тута вообще ни в каком виде не учавствуют. Пишу на дульфи, но это для справки. Никаких питонов, рубинов на рельсах и прочей непотребщины с кучей встроенных сартировок на все случаи жызни ( и смерти ) не имеем.


Отправлено Ghoul [BB] 17-05-2019 в 18:53:

Позови Мастера на фриланс, сортировка строк - его конёк!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Дядя Миша 17-05-2019 в 19:22:

За разумное время обычно предполагается сортировать что-то такое, что надо выполнять не один раз, а прямо тысячу раз в секунду. А если надо всего один раз, то любое время будет разумным. В разумных пределах конечно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 17-05-2019 в 19:45:

А зачем тут хэши? Просто пройтись линейно по списку и выбрать те, у кого нужные расширения, разве нельзя?

Цитата:
Ghoul [BB] писал:
Позови Мастера на фриланс, сортировка строк - его конёк!

Но строки должны обязательно быть в delta.lst.

__________________

xaerox on Vivino


Отправлено thambs 17-05-2019 в 20:24:

А на каком этапе-то здесь сортировка?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено AntiPlayer 17-05-2019 в 20:34:

Цитата:
Ghoul [BB] писал:
Позови Мастера на фриланс, сортировка строк - его конёк!

Мастер за делфи и с лестницы спустить может

Цитата:
XaeroX писал:
А зачем тут хэши? Просто пройтись линейно по списку и выбрать те, у кого нужные расширения, разве нельзя?

Вот и я так подумал.

Делай в отдельном потоке чтобы интерфейс не вешать, создай прогресбар и будет красота. В делфи это пара-тройка кликов.

__________________
I tell you to enjoy life


Отправлено domded 17-05-2019 в 21:31:

Дядя Миша
XaeroX
Вот это вот как раз и загвоздка. Данные надо передать в последующую обработку как можно быстрее, такое условие ( оно изменению не подлежит, заказчику приспичило выпустить очередной универсальный всемогутер-индексатер-архиватер всего шо только можно, да и ещё со световой скоростью ). Построчное сравнение ( даже если делать чисто сишными средствами memcmp/функцией прохода по массиву, сравнивая всё это дело посимвольно с конца ) займёт туеву хучу времени, на таком количестве данных это ощущается остро, данный лист изначально формируется порядка 15-20 минут стандартными виндовыми FindFirstFile, и это я ещё свои контейнеры-бассейны туды впилил, ибо дульфя по умолчанию не умеет в списки с фиксированным пулом. Поэтому и спрашиваю у тех, кто разбирается в сложности алгоритмов, как с этой ситуации выйти. На форумах даже англоязычных я способов ускорения для такой задачи найти не смог
Если это и не поможет, то придётся писать свой парсер для Жырнича32 и НТФС. Может выиграю на изначальном построении дерева, но и это ещё бабка на двоих нассала, информацию по файловым системам приходится зубами выгрузать из мсдн. Прямо-руки опускаются.
thambs
Сортировка мне ещё в идеале нужна по размеру файла. Но я так подозреваю ( аки та собака ) что на таком объёме данных это невозможно.


Отправлено Ghoul [BB] 17-05-2019 в 22:11:

Цитата:
XaeroX писал:
Но строки должны обязательно быть в delta.lst.


Пусть переименует исходник в дельта.лст, делов-то!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Дядя Миша 18-05-2019 в 06:32:

Цитата:
domded писал:
Построчное сравнение

так оно тебя ждёт в любом случае. Ну хочешь - сравнивай адреса в памяти, только ты так не найдешь одинаковые расширения.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 18:11.
Показать все 9 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024