Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/104: Рейтинг темы: голосов - 104, средняя оценка - 4.97
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2

Быстрое чтение файла

11.11.2011, 10:59. Показов 21591. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте. Я пишу программу, которая читает файлы порядка от нескольких килобайтов до максимум 3 Мб. Посоветуйте пожалуйста, какие функции и/или алгоритмы использовать для максимальнобыстрого чтения данных, представленных вещественными числами. Прошу прощения, если мой вопрос неправильно сформулирован.
3
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2011, 10:59
Ответы с готовыми решениями:

Быстрое чтение массива из файла
Добрый день, появился вроде бы не сложный вопрос, у меня есть динамический массив данных double ** data; // пусть 200x500 //я его...

Быстрое чтение и запись файлов
Вопрос такой: имеется файл input.txt следующего вида: 5 12 6 7 44 2 1 2 3 4 5 2 343 634 54 1 123 2 345 56 56 11111 2222...

Быстрое заполнение большого файла
Здравствуйте! Возникла проблема в работе с большим файлом: возникла необходимость быстро заполнять некоторый участок большого файла...

71
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
11.11.2011, 23:09  [ТС]
Студворк — интернет-сервис помощи студентам
Теперь ясно что стрток быстрее всех, что интересно, стрток не хотел работать в кодблоксе, но сразу заработал в дев-с++ с более старым мингвом
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 23:11
Попробуйте потоки С++, но с разными настройками оптимизации. У gcc -O2 и -O3. Интересно, как тогда оно себя покажет.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
11.11.2011, 23:14
Байт, Когда критично время - не стоит юзать ООП.
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.11.2011, 23:19
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от programina Посмотреть сообщение
У меня не работает
error: 'readx' was not declared in this scope
Понял. Ваш исходный файл - cpp. А для плюсов предобъявление функций жизненно важно (из-за перегрузок). Стоит назвать его test.c и трансляция пройдет как по маслу. Ну, может быть пара Варингов выскочит (от настроек зависит)

Добавлено через 1 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
Байт, Когда критично время - не стоит юзать ООП.
Всеми четырьмя лапами - ЗА!
Но топик именно этому и посвящен
3
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.11.2011, 23:21
Цитата Сообщение от Байт Посмотреть сообщение
Но топик именно этому и посвящен
Именно, мы в Си пытаемся понять что к чему без ООП
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
12.11.2011, 17:48
Цитата Сообщение от programina Посмотреть сообщение
я сделала на 40 дублей ~240 Mb :
strtok быстрее! 35 vs 26
- programina, я об этом и говорил ОЗУ всегда быстрее файлового парсинга, фактически при больших объёмах информации решаующую роль будет играть число операций в секунду, в случае съёмного носителя, даже HDD скорость передачи данных ограничена физически, тогда как в ОЗУ все операции происходят мгновенно...
Лично на своей практике, держал в опретивке 180 Мб(была матрица 5000х5000 + ычисления с ней - алгоритм отрабатывал где-то за 10 сек, а вот считывание этой матрицы из файла просто само по себе шло порядка 5-6 минут(там ещё преобразования считываемого были - вот и низкая скорость).

Добавлено через 13 минут

Не по теме:

PS:

Цитата Сообщение от programina Посмотреть сообщение
strtok быстрее! 35 vs 26
- я имел ввиду не быстроту strtok или fscanf, подразумевал предпочтение работы с данными из ОЗУ чем с данными на HDD или съёмнике (при малых, средних объёмах информации по отношению к объёму ОЗУ). Как варинт предлагаю мой вариант со strtok-ом заменить после чтения данных из файла на sscanf, как раз можно будет сравнить скорость файлового потока(fscanf) и потока данных из ОЗУ(sscanf);)Позже и сам этим займусь, а ещё попрубую считать данные в std::string и использовать С++ методы обработки...

1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.11.2011, 01:21
-=ЮрА=-, Пожалуйста, успокойтесь, вы уже давно не в теме, и ваши высказывания напоминают мне некоторые эпизоды, наблюдаемые когда-то мной в психбольнице щадещего профиля
Попробуйте понять - о чем речь. И что рвется из вашей души.
ЗЫ. В вашей квалификации я нисколько не не сомневаюсь
1
13.11.2011, 08:02
Лучший ответ Сообщение было отмечено как решение

Решение

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
В вашей квалификации я нисколько не не сомневаюсь
Двойное отрицание намекает :D

4
13.11.2011, 12:27

Не по теме:

Рекомендую всем тут поменьше за глаза писать, я конечно понимаю из за монитора можно всё что хочешь лить, ну а так на улице послушал бы что тут каждый сказал бы:black_eye.:, я то в себе уверен, а вы???:)
PS:Квалификации большинства собравшихся здесь мне остаётся только завидовать...:-[:D

1
13.11.2011, 14:52

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Рекомендую всем тут поменьше за глаза писать, я конечно понимаю из за монитора можно всё что хочешь лить
в зависимости от расположения ударения в слове "писать", получаются весьма интересные варианты.

1
13.11.2011, 15:25

Не по теме:

Цитата Сообщение от vetvet Посмотреть сообщение
в зависимости от расположения ударения в слове "писать", получаются весьма интересные варианты.
ну тогда мне остаётся псочувствовать тем кто вместо писать(уд на 2-й слог) делает перед монитором то о чём написали:DЯ имел ввиду 1-е, а вы???:rofl:

0
 Аватар для Malysh-ok
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
25.04.2015, 18:43
День добрый.
Цитата Сообщение от Байт Посмотреть сообщение
Цитата Сообщение от Thinker
Буферизация всегда есть в текстовом и двоичном формате, теперь я это вижу. Но тогда как свой буфер точно такого же размера (а то и меньшего) в разы ускоряет процессы. Вот если встроенный буфер отключить, то собственный буфер сходит на нет.
Видимо fread не просто пересылает несколько байт из буфера, а еще о чем-то напряженно думает, потому лучше к нему обращаться пореже.
Так что мы оба оказались правы. что приятно.
Итоги дискуссии
1. Буфер создается для любого потока, если для его уничтожения не предпринимать специальных мер.
2. Тем не менее, в критических по времени случаях следует создавать собственный буфер, чтобы пореже обращаться к функциям fread, fwrite
Несколько вопросов:
1) Что подразумевается под "своим буфером"? То, что задаем в setvbuf() ?
Если да, то правилен ли код ниже и обеспечивает ли он макс. быстродействие?
C
1
2
3
4
5
6
7
8
9
BUFSIZ = 4096;
FILE f;
char buf[BUFSIZ];
f = fopen("test.tst", "rb");
setvbuf(f, buf, _IOFBF, BUFSIZ);
...
fread(buf, sizeof(char), BUFSIZ, f);
...
fclose(f);
2) Чем руководствоваться, при выборе значения BUFSIZ, если по условиям задачи нужно макс. скорость чтения файла и мин. затраты памяти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2015, 18:43

Быстрое преобразование фурье wave файла
Всем доброго времени суток! Сейчас работаю над дипломом, в c++ как и в обработке звука пока новичок. На данном этапе мне необходимо...

Максимальное быстрое создание большого файла
У кого какие алгоритмы создания максимально быстро файлов, больших размеров?

Быстрое считывание 32кб из файла 7гб
Есть бинарный файл размером 6,95 ГБ, он представляет из себя массив short. Необходимо быстро считать случайные 65536 шортов. Т.к. весь файл...

Быстрое создание пустого файла определенного размера
Добрый день Столкнулся с проблемой как можно очень быстро создать файл на жестком диске, заполнены нулями (или мусором) за малый...

Быстрое создание бинарного файла заданного размера
Собственно, вопрос в теме. Как быстро выделить память под файл? Можно, конечно, методично записать в файл массив необходимого размера, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
72
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru