Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тактика работы с файлами, чтение и запись файлов 
:(
    Опции темы
Kvazilol
Дата 20.4.2007, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



есть диски, хочу читать с дисков кое какие файлы.
есть папка на какомто диске, хочу эти файлы туда сохранить.
главное что хочу делать эти действия одновременно чтобы не ждать пока там ВСЕ файлы найдутся... 

какой самый быстрый алгоритм этой программы? 

вот как сделал я -

1 этап) получить список всех файлов (загрузка проца на 100% на секунд 40)
2 этап) для каждого ДИСКА создается и запускается поток в котором нужные файлы этого диска сохраняются в мою ОчередьФайловНаЗапись

ОчередьФайловНаЗапись это у меня такой объект (1 объект на всю программу, виден везде), снаружи туда можно только добавлять файлы. как только файл добавлен, он записывается, как только он записался, записывается слудующий файл из очереди этого объекта.
таким образом пока в очереди есть файлы, он записываются, как только в очереди нет файлов, ничо не просходит пока в очереди не появится файл.

Фишка в том что Сохранение файла происходит в потоке с очень низким приоритетом, таким образом пока файл пишется, в очередь, вероятно, добавятся еще файлы.  (одновременно будут чтение с дисков и запись на один из дисков!!! думаю что это выйгрыш производительности)

как бы стратегия такая - для каждого диска  выполняется поток чтения файлов с диска и занесение их в очередь + отдельный поток записи файлов (а очередь нужна чтобы одновременно и на один диск не записывись более 1 файла!!! ведь иначе скорость записи ооочень сильно уменьшается )

критикуйте, советуйте, что не так и как должно быть  smile 

если чо, кину код, но помоему можно и так все объяснить и понять

тестировать разные варианты очень лень.. хотя было бы полезно

Это сообщение отредактировал(а) Kvazilol - 20.4.2007, 01:31
PM MAIL   Вверх
Hurricane
Дата 20.4.2007, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 3
Всего: 9



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

Единственное, на чем (в теории, как это получить на практике - без понятия) можно было бы выиграть - не делать лишних позиционирований. Но никто не знает, как раскиданы файлы по диску, так что это остается только теорией. Ну и разные физические диски можно обрабатывать параллельно. С логическими дисками - это по барабану.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.