Считывание данных из текстового файла

программирование С С++

Какой наиболее быстрый способ считывать данные из текстового файла?
Использовал fscanf(),самое быстрое что нашёл.Но всё равно,временная трассировка показывает,что время считывания данных занимает 80% времени.
Есть ли другой выход?Именно для текстовых данных,не бинарных.Я так понимаю,что fread() сюда нельзя прикрутить.Он работает в 5 раз быстрее.
С потоками ещё в два раза медленней получается.

Примечание:
SKYDOS
Я читал на форуме,что можно сделать буферизованый ввод.Но не пойму,чем он реализуется.Пробовал считывать строками,разбивать их потом на элементы и приводить к нужному типу,так время вообще зашкаливает.

Примечание:
Дополню вопрос.Сам алгоритм задачи занимает 0.1 сек.Считывание данных-1.2 сек.В секунду не вкладываюсь(Ограничения по времени нет,но дело принципа).Знаю,есть решение у пацана за 0.8сек.У совершенствование алгоритма меня не спасает.Только ускорить ввод.
Вот и вопрос,может это моя виста со 100 запущенными процессами,так влияет на временную трассировку?Всё таки многозадачность мнимая.А я зря парюсь.

Примечание:
Входные данные:unsigned int матрица 1000 на 1000
Ответы:
Конечно долго, обращение к диску всегда долго. Ничего не поделаешь. fscanf - оптимальный вариант.
Вариант:
узнайте размер файла, распределите под него память и прочитайте туда разом весь файл fread()'ом. А после этого парсите содержимое памяти по указателю как хотите — эта операция заведомо быстра.
fread() как раз и можно. Считываешь за один приём весь файл (заранее узнав его размер и выделив памяти), а потом используешь sscanf(), указывая на этот буфер как на строку. Возможно, в зависимости от задачи, предварительно надо будет буфер разбить на строки. Но это уже будет происходить в памяти, а не на диске.
ИМХО не плохая вещь системный вызов
read()
объявлен в unistd.h
Читает данные в "сыром" виде, то есть как последовательность байт, без какой-либо интерпретации.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.