powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Мозгоштурм: как обработать быстрее?
25 сообщений из 53, страница 1 из 3
Мозгоштурм: как обработать быстрее?
    #39561740
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая задача:
Приложение получает из таблицы в базе список файлов, затем должно пройти по списку и определить - существует ли физически файл по указанному пути.
Если не существует файл добавляется в список несуществующих файлов, который и является целью обработки.

При большом количестве файлов в списке обработка длинная.
Как можно распараллелить? ускорить?
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561743
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай в N потоков.

Как вариант: если папок с файлами немного, то сначала прочитать содержимое папок в массив, затем проверять на наличие в массиве.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561744
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДелай в N потоков.

Как вариант: если папок с файлами немного, то сначала прочитать содержимое папок в массив, затем проверять на наличие в массиве.

да, вариант, хоть в общем случае неизвестно много ли файлов.

Но вот "наличие в массиве" как проверять? Перебором?
Там ключ по идее полный путь к файлу.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561747
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинНо вот "наличие в массиве" как проверять? Перебором?
Зачем перебором? Отсортируй и бинарным поиском. Или HashSet возьми вместо массива.
Ролг ХупинТам ключ по идее полный путь к файлу.
В массив тоже пиши имя с полным путем.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561758
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
В табле триггер на insert и проверять на данное событие. Будет мгновенно.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561766
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Неужели обработка быстрее поиска?
Мне кажется всю задачу надо смотреть.
Представим есть терабайт hdd. И зачем каждый раз по нему искать?
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561778
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупин,
В табле триггер на insert и проверять на данное событие. Будет мгновенно.

Из базы только читается список файлов, далее всё делается в приложении.
Если имеется в виду - в момент добавления файла в базу, то - да, можно и так, но после этого файл могли грохнуть и т.д.
Там есть и обратная задача, но есть условие: из базы никаких выходов во внешний мир, т.к. Azure, RDS, SQL Server Linux
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561783
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Если файл могли грохнуть, то никакие списки ЗАРАНЕЕ на клиенте делать нельзя.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561786
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинТам есть и обратная задача,
Если это какое то зеркало, то ваша задача шире какого то поиска файлов в операционке.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561800
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупин,
Если файл могли грохнуть, то никакие списки ЗАРАНЕЕ на клиенте делать нельзя.

Ну, это и не зеркало.

Задача 1. В базу пишутся записи о прикладных объектах, каждый объект имеет список связанных с объектом файлов (путей).

Объект О1->
->Файл1
->Файл2
...
->ФайлN

Юзер может проверить целостность набора файлов в клиентском приложении.
Выбирается список из базы (Файл1,...,->Файл10000) и создается список несуществующих.
Почему они уже не существуют - вопрос третий, да это и не важно.

Задача 2. (Обратная)
В функцию в приложении передается фолдер и нужно создать список файлов, которые есть в фолдере, но нет в таблице в базе.

Эти задачи делаются, но при большом количестве файлов на диске и/или в базе - они тяжелые и долго выполняются, потому что линейно, по одной записи.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561807
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Вы мне рассказали решение. А я говорил о постановке. Т.е. почему файлы?
...
Если пропустить постановку, то давайте цифры про "тормозит"
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561810
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинНу, это и не зеркало
Да. Это Git хранилище со снимками
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561812
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

а сколько файлов? как долго выполняется?

У нас админ тупо на PowerShell скрипт наваял и он шустро работает.

9 с половиной миллионов файлов в 14 миллионах папок.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561813
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЭти задачи делаются, но при большом количестве файлов на диске и/или в базе - они тяжелые и долго выполняются, потому что линейно, по одной записи.
Сиквел умеет хранить в базе файлы, но в виде ссылок? Как в оракле?
Подходит вариант?
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561818
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг ХупинЭти задачи делаются, но при большом количестве файлов на диске и/или в базе - они тяжелые и долго выполняются, потому что линейно, по одной записи.
Сиквел умеет хранить в базе файлы, но в виде ссылок? Как в оракле?
Подходит вариант?


не ;-) там строчки nvarchar - пути к файлам.

Как я написал
"Приложение получает из таблицы в базе список файлов, затем должно пройти по списку и определить - существует ли физически файл по указанному пути.
Если не существует файл добавляется в список несуществующих файлов, который и является целью обработки."

Для большого списка проверка существования каждого файла - одно из узких мест.
Ну, да, разве что запустить в несколько потоков проверку и если нет файла - добавление в тот же список.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561819
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупин,

а сколько файлов? как долго выполняется?

У нас админ тупо на PowerShell скрипт наваял и он шустро работает.

9 с половиной миллионов файлов в 14 миллионах папок.

Это у разных юзеров выполняется, по-разному может быть, где-то быстро, где-то несколько часов, если файлов много, если слабая машина, где запустили утилиту и т.д.
Интерфейс должен быть юзер-френдли, потому PS не пройдет.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561823
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинskyANAРолг Хупин,

а сколько файлов? как долго выполняется?

У нас админ тупо на PowerShell скрипт наваял и он шустро работает.

9 с половиной миллионов файлов в 14 миллионах папок.

Это у разных юзеров выполняется, по-разному может быть, где-то быстро, где-то несколько часов, если файлов много, если слабая машина, где запустили утилиту и т.д.
Интерфейс должен быть юзер-френдли, потому PS не пройдет.
Несколько часов у юзера? Сомневаюсь, что у отдельного юзера миллионы файлов. Смотрите на чём конкретно тормозит Ваша обработка.

LINQ используете?
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561826
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинДля большого списка проверка существования каждого файла - одно из узких мест.
Это не конкретный текст.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561831
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупиннесколько потоков проверку
Головка HDD одна ))).
Поэтому выкладывай инфу.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561836
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Получить список файлов из БД.
2. Получить список файлов из папки на диске.
3. Получить различия, сделав хэш-таблицу из одного из списков.

Может я чего-то дико не понимаю?
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561838
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупинпропущено...


Это у разных юзеров выполняется, по-разному может быть, где-то быстро, где-то несколько часов, если файлов много, если слабая машина, где запустили утилиту и т.д.
Интерфейс должен быть юзер-френдли, потому PS не пройдет.
Несколько часов у юзера? Сомневаюсь, что у отдельного юзера миллионы файлов. Смотрите на чём конкретно тормозит Ваша обработка.

LINQ используете?

Конечно, миллионов файлов нет, тыщи, LINQ тоже нет. Читается список в List<string>, затем суётся в DGV , затем проверяется и формируется целевой список несуществующих во втором DGV. Код написан 300 лет назад
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561840
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Говорит что список машины может устареть)
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561843
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупиннесколько потоков проверку
Головка HDD одна ))).
Он же не файлы будет читать, а содержимое папок. Виндовс эту инфу кэширует.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561849
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинКод написан 300 лет назад
Ролг ХупинКод написан 300 лет назад
Осталось написать
Test
For 1000 to
If FileExist ("xxxxxxx
End for
И сказать время.
...
Рейтинг: 0 / 0
Мозгоштурм: как обработать быстрее?
    #39561850
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tкэширует
Тут мы углубимся в кэш протух и твёрдотельные диски.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Мозгоштурм: как обработать быстрее?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]