|
|
|
Быстрое чтение файла11.11.2011, 10:59. Показов 21162. Ответов 71
Метки нет (Все метки)
Здраствуйте. Я пишу программу, которая читает файлы порядка от нескольких килобайтов до максимум 3 Мб. Посоветуйте пожалуйста, какие функции и/или алгоритмы использовать для максимальнобыстрого чтения данных, представленных вещественными числами. Прошу прощения, если мой вопрос неправильно сформулирован.
3
|
|
| 11.11.2011, 10:59 | |
|
Ответы с готовыми решениями:
71
Быстрое чтение массива из файла Быстрое чтение и запись файлов
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||||||
| 11.11.2011, 14:37 | |||||||
0
|
|||||||
|
Клюг
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||||||||||||||||||
| 11.11.2011, 14:37 | ||||||||||||||||||
|
IMHO, для ДОСи можно использовать
0
|
||||||||||||||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 11.11.2011, 14:42 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 11.11.2011, 14:45 | ||
|
malloc, т.е. в динамической памяти
1
|
||
|
|
||||||||||||
| 11.11.2011, 15:01 | ||||||||||||
Чтобы перебить строку в вещественные числа strtok-ом парсим токены идущие через пробел char delim[] = " ";
Ну а на плюсах можно всем что выше написал не заморачиваться и сделать вот так программа с динамической памятью тут уже готовый проект считывания ifstream-ом
1
|
||||||||||||
| 11.11.2011, 15:03 | |
|
Не по теме: -=ЮрА=-, но вопрос то такой: происходит ли автоматическая буферизация двоичных потоков
0
|
|
|
|
|
| 11.11.2011, 15:15 [ТС] | |
|
Не по теме:
Спасибо всем большое, но у меня уже переполнение буфера в голове от такого кол-ва информации.
0
|
|
|
|
|||||||||||
| 11.11.2011, 16:37 | |||||||||||
|
Всё же я посьавил себе за цель проверить свои слова о быстроте,
для полноты анализа рассматривал сразу 3 алгоритма чтения вещественных в массив 1 - й вариант fscanf 2 - й буффер а затем подхват всего strtok-ом и atof-ом 3 - й любимый многими начинающими вариант ifstream>> Пришлось написать заполнитель файла - мой файл содержит 656898 double и весит 3,75 Мб) (вбивать вручную 3 Мб чисел я бы засел на дня 2) так что цепляю и код рандомного наполнителя файла тоже (наполняет файл долго - около 15 сек, ну дык и значений почти 660 тысяч) fill.cpp
Сам алгоритм чтения здесь read.cpp
Сравнительная таблица на миниатюре. Как видим быстро отработали 1-й и 2-й варианты, но спешу заметить посмотрите сколько операций именно во 2-м варианте - в два раза больше чем в 1-м, а время работы идентично, так что выводы делайте сами... PS:Плюсовый вариант прямого чтения ifstream>> явообще отбросил для себя (даже и не думал что это такой ужас в плане времени)
1
|
|||||||||||
|
|
|
| 11.11.2011, 18:44 [ТС] | |
|
Если не использовать cout, то на заполнение файла у меня ушло ~5 сек
![]() Чтение фсканфом у меня в 4 раза быстрее чем ifstream А strtok у меня not declared in this scope
0
|
|
|
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
||
| 11.11.2011, 18:47 | ||
|
з.ы. было бы информативно проверить результаты действия разных вариантов с точносттю не до секунды, а до миллисекунды. возможно разница всетаки есть.
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||||
| 11.11.2011, 18:50 | ||||||
|
Вот
2
|
||||||
|
|
|
| 11.11.2011, 19:04 [ТС] | |
|
У меня не работает
![]() error: 'readx' was not declared in this scope
0
|
|
|
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
||
| 11.11.2011, 19:09 | ||
|
поменяйте местами или объявите прототипы.
1
|
||
| 11.11.2011, 19:10 | |
|
Не по теме: Байт, а это что у вас за компилятор, который нашёл функции без объявления перед использованием?
0
|
|
| 11.11.2011, 19:10 | |
|
Быстрое преобразование фурье wave файла
Быстрое считывание 32кб из файла 7гб Быстрое создание пустого файла определенного размера Быстрое создание бинарного файла заданного размера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|