|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.02.2017, 03:44 | #1 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 38
|
Читать много файлов по несколько байт win32
Есть папка в ней много файлов. Файлы не больше 8 байт. Надо их читать и делать небольшие вычисления. Как это лучше делать?
Наверно лучше под каждый файл выделять поток. Т.к. параллельно чтение файлов лучше последовательного (контроллер диска полечат сразу много команд на чтение и имеет возможность их оптимизировать, а не простаивает). Однако количество потоков ограничено. Потому придётся использовать всё тоже самое но в пуле потоков. Может я где-то не прав? Может придумываю костили? Какие у вас идеи? |
10.02.2017, 08:44 | #2 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
Лучше слить их в один файл, загрузить его весь в память и обращаться к маленьким частям прочитанного файла как к целому исходному файлу.
|
10.02.2017, 09:20 | #3 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Слить в один файл так, как время открытия файла достаточно велико. 0,1-0,3 с.
Цитата:
Лучше один поток на чтение он будет работать быстрее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
10.02.2017, 12:04 | #4 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
чтобы работать параллельно? Ничего кроме "забивания" ввода/вывода Вы этим не добьетесь. А если еще и файлов много и на каждый отдельный поток, то еще и затормозите свою программу. Больше потоков - не значит лучше. |
|
11.02.2017, 22:49 | #5 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 38
|
А на уровне операционной системы нет такой оптимизации?
|
11.02.2017, 22:54 | #6 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 38
|
Мне просто дали такое задание:
На компьютере существует папка с файлами. Файлов много, их имена заранее неизвестны, в каждом файле записано целое число (необходима дополнительная проверка на корректность содержимого файла). Нужно написать консольное приложение win32, которое принимает на вход путь к папке и обрабатывает файлы следующим образом: Для каждого файла нужно выполнить следующий порядок действий: 1. прочитать из файла число 2. сразу же, после получения числа, нужно вывести его и имя файла в stdout, например: o.txt: 3 3. после этого необходимо усыпить текущий поток на 1 секунду После обработки всех файлов необходимо сообщить пользователю сумму всех чисел. Дополнительные условия: - программу следует писать в IDE Microsoft Visual Studio - будет преимуществом использование библиотеки Boost - программа должна обрабатывать файлы параллельно Как его лучше сделать? Сделал каждый файл в своем потоке. Может надо в пуле потоков? Каким лучше сделать размер пула? |
12.02.2017, 06:18 | #7 | ||
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
При их наличии можно что угодно писать, программа всё равно будет тормозом. Цитата:
|
||
12.02.2017, 09:09 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Если надо показывать файл за файлом, да еще с интервалом, тогда я не понимаю, зачем это делать параллельно, либо условие недосказано и там написано "параллельно чему-то там".
|
12.02.2017, 16:57 | #9 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 38
|
Это полость тест задания.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в Visio C++ win32 проекте создать динамический текст и читать из него информацию | Krasi | Помощь студентам | 0 | 08.10.2015 09:40 |
asm вставка, прошу помощи (1 байт воспринимается как много, кириллический символ) | stslam | C++ Builder | 19 | 24.01.2014 11:55 |
как можно читать файл несколько раз??? | Shahzod | Общие вопросы C/C++ | 2 | 14.12.2013 13:28 |
Как читать атрибуты с файлов? | eks-s | Общие вопросы Delphi | 2 | 16.01.2008 02:25 |
Что делать..:(((много читать)Global problem! | Elm0 | Свободное общение | 24 | 28.06.2007 18:13 |