Эффективность различных способов работы с файлами в языках С/С++ | Статья в журнале «Техника. Технологии. Инженерия»

Отправьте статью сегодня! Журнал выйдет 6 февраля, печатный экземпляр отправим 10 февраля.

Опубликовать статью в журнале

Библиографическое описание:

Эффективность различных способов работы с файлами в языках С/С++ / Е. В. Коптенок, В. С. Лядов, М. Ю. Пескова [и др.]. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2020. — № 1 (15). — С. 5-9. — URL: https://moluch.ru/th/8/archive/152/4839/ (дата обращения: 26.01.2021).



Главный объект, с которым работает любой компьютер — информация. Как и человек, компьютер обрабатывает разного рода информацию: текст, графику, звук, видео и т. д. Одним из способов хранения и обработки информации на компьютере является использование файлов. Файл представляет собой последовательный набор данных, хранящийся на каком-либо физическом устройстве и имеющий имя и расширение. Работа с файлами реализуется средствами самой операционной системой. Операционная система предоставляет приложениям набор некоторых функций, благодаря которым организуется работа с файлами. На файловую систему накладываются определённые ограничения самой операционной системой. С точки зрения API, файл представляется как объект, по отношению к которому применяются функции API. На уровне API не важно, существует ли файл, как объект файловой системы или как устройство ввода-вывода. Расширение файла предназначено для однозначного определения типа файлового объекта.

Наиболее распространенные расширения:

– Текстовый документ: txt;

– Форматированный текстовый документ: rtx, rtf, pdf, doc, docm;

– Электронные таблицы: xls, xlsx, xlsm, ods;

– Графика: jpg, jpeg, gif, png;

– Видео: mpeg 263, avi;

– Архив: rar, zip, tg;

– Исполняемые файлы: exe, cmd, bat;

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

Перед тем, как перейти к тому, какими же средствами в языках программирования C/C++ реализованы способы работы с файлами, стоит заметить, что существует два основных способа хранения в файлах, в виде:

– Текстовых файлов;

– Бинарных файлов;

Текстовый файл — является своим родом компьютерного файла, который структурирован как последовательность строк из электронного текста.

Преимущества:

– Универсальность — любая операционная система может прочитать файл, особенно если речь идет об однобайтных кодировках, которые не подвержены проблеме, характерной для других форматов файлов.

– Формат текстового файла простой, и он свободно может быть изменён обычным редактором текста, который в свою очередь есть в любом ОС.

Недостатки:

– У текстовых файлов, имеющих большой объём, низкая информационная энтропия — эти файлы занимают больше места, нежели чем минимально необходимо.

– Некоторые операции производимыми над текстовыми файлами малоэффективны. К примеру, если в файле встретится число, вычислительная система до начала операций с ним должна будет перевести его в собственный внутренний формат, применив сравнительно сложную процедуру преобразования числа; чтобы перейти на 1000-ю строку, требуется пройти 999 строк, идущих до нее.

Двоичный (бинарный) файл — в широком смысле представляет собой набор последовательных произвольных байтов.

В узком смысле слова: двоичные файлы — противопоставляются текстовым файлам. При этом, если говорить о технической реализации на уровне аппаратного обеспечения, текстовые файлы являются частным случаем двоичных файлов, и следовательно, можно сказать, что абсолютно любой файл является «двоичным»

Целью данной статьи является выяснить производительность различных способов работы с файлами. В качестве способов обработки файлов рассматривались:

– Функции заголовочного файла стандартной библиотеки языка C, для файлового ввода и вывода.

– Потоковые классы языка C++: ifstream и ofstream.

В качестве способов хранения выступали текстовые и бинарные файлы.

Для проверки эффективности каждого способа обработки были получены значения времени, за которое происходит считывание и сохранение данных в файл. В качестве данных выступал массив структур, размерностью 1000 элементов, хранящий запись вида: “Строка, целое число, вещественное число”. Эксперименты, обсуждаемые в данной статье, проходили на ноутбуке (модель Intel Core i5 CPU P8300, 2.4*4 Ghz), работающий на Windows 10. Размер оперативной памяти 8 Гб. Для каждого способа эксперимент повторялся 20 раз, и учитывался средний показатель.

Таблица 1

Значение времени, за которое произошло считывание данных из файлов. ms— миллисекунды

Текстовый файл

Бинарный файл

Стандартная библиотека языка С

3 ms

1 ms

Потоковые классы: ifstream, ofstream

8 ms

7 ms

Таблица 2

Значение времени, за которое произошла запись данных вфайлов. ms— миллисекунды

Текстовый файл

Бинарный файл

Стандартная библиотека языка С

3 ms

1 ms

Потоковые классы: ifstream, ofstream

13 ms

12 ms

Рис. 1. Время, затраченное на считывание данных из файла

Рис. 2. Время, затраченное на запись данных в файл

Вывод:

Наиболее оптимальной по времени оказалась работа стандартной библиотеки языка С. Исследование показывает, что наилучшую скорость работы обеспечивают средства стандартной библиотеки языка С, описанные в заголовочном файле stdio.h при взаимодействии с бинарными файлами. Наихудший результат показывает работа с текстовыми файлами, средствами потоковых классов, описываемые в стандартной библиотеке C++: ifstream и ofstream.

Литература:

  1. Страуструп, Б. Язык программирования C++ / Б. Страуструп. — М.: Радио и связь, 2011. — 350 c.
  2. Керниган, Б. Язык программирования C. / Б. Керниган, Д. М. Ритчи. — М.: Вильямс, 2016. — 288 c.
Основные термины (генерируются автоматически): файл, API, значение времени, стандартная библиотека языка С, текстовый файл, бинарный файл, заголовочный файл, операционная система, самая операционная система, файловая система.

Похожие статьи

Алгоритм сжатия текстовых файлов | Статья в журнале...

Алгоритм сжатия текстовых файлов. Авторы : Череданова Екатерина Максимовна , Мамченко Елизавета Андреевна.

Растущий в настоящее время объем текстовой информации требует разработки новых эффективных и надежных методов ее кодирования, закрытия и передачи.

Применение простой стеганографии при передаче файлов...

В данной статье описывается понятие стеганографии, а также показывается её применение на простейших примерах в операционной системе Windows. Ключевые слова: стеганография, скрытие, криптография, альтернативные потоки данных, rarjpeg.

Операционные системы мобильных мультимедиа устройств для...

Наше исследование — рассмотрение операционных систем мобильных мультимедиа устройств и

В отличие от Android, операционная система iOS не используется на устройствах от других производителей и не

С технической точки зрения прошивка — это бинарный файл, который...

Применение графической библиотеки SDL2.0 для...

Для работы с аудио необходимо подключить заголовочный файл SDL_audio.h.

Использование средств библиотеки SFML для написания игровых проектов. Применение графической библиотеки SDL2.0 для программирования компьютерных игр на языке СИ.

Интеграция MS-DOS приложений в современные операционные...

Однако эта операционная система уже устарела, и использовать её становится неудобно, а порой даже не представляется

Первым и самым простым способом является использование самой операционной системы MS-DOS. Но такой способ обладает целым рядом недостатков.

Современные системы автоматизированного динамического...

Статья посвящена исследованию трех современных систем автоматизированного динамического анализа вредоносных файлов: Cuckoo Sandbox , Anubis и DRAKVUF . Показано значение подобных систем в области изучения функциональности вредоносных программ.

Сравнительный анализ методов Наивного Байеса и SVM...

В статье раскрывается понятие классификации текстовых документов для автоматического обнаружения категорий по текстам. Проводится сравнительный анализ двух самых главных алгоритмов, которыми являются методы наивного Байеса и SVM.

Системы сбора информации в аспекте кибербезопасности

Система должна иметь OS независимые агенты сбора и мониторинга. – В системе должен присутствовать Веб интерфейс. – Система должна иметь возможность извлекать данные анализа для визуализации через API или иметь средство визуализации данных анализа.

С++ библиотека компонентов генетических алгоритмов

Готовый файл библиотеки теперь доступен для решения оптимизационных задач с помощью генетических алгоритмов. Чтобы решать задачи с помощью данной библиотеки, создается новый проект, подключается файл библиотеки Library.lib, подключаются заголовочные...

Похожие статьи

Алгоритм сжатия текстовых файлов | Статья в журнале...

Алгоритм сжатия текстовых файлов. Авторы : Череданова Екатерина Максимовна , Мамченко Елизавета Андреевна.

Растущий в настоящее время объем текстовой информации требует разработки новых эффективных и надежных методов ее кодирования, закрытия и передачи.

Применение простой стеганографии при передаче файлов...

В данной статье описывается понятие стеганографии, а также показывается её применение на простейших примерах в операционной системе Windows. Ключевые слова: стеганография, скрытие, криптография, альтернативные потоки данных, rarjpeg.

Операционные системы мобильных мультимедиа устройств для...

Наше исследование — рассмотрение операционных систем мобильных мультимедиа устройств и

В отличие от Android, операционная система iOS не используется на устройствах от других производителей и не

С технической точки зрения прошивка — это бинарный файл, который...

Применение графической библиотеки SDL2.0 для...

Для работы с аудио необходимо подключить заголовочный файл SDL_audio.h.

Использование средств библиотеки SFML для написания игровых проектов. Применение графической библиотеки SDL2.0 для программирования компьютерных игр на языке СИ.

Интеграция MS-DOS приложений в современные операционные...

Однако эта операционная система уже устарела, и использовать её становится неудобно, а порой даже не представляется

Первым и самым простым способом является использование самой операционной системы MS-DOS. Но такой способ обладает целым рядом недостатков.

Современные системы автоматизированного динамического...

Статья посвящена исследованию трех современных систем автоматизированного динамического анализа вредоносных файлов: Cuckoo Sandbox , Anubis и DRAKVUF . Показано значение подобных систем в области изучения функциональности вредоносных программ.

Сравнительный анализ методов Наивного Байеса и SVM...

В статье раскрывается понятие классификации текстовых документов для автоматического обнаружения категорий по текстам. Проводится сравнительный анализ двух самых главных алгоритмов, которыми являются методы наивного Байеса и SVM.

Системы сбора информации в аспекте кибербезопасности

Система должна иметь OS независимые агенты сбора и мониторинга. – В системе должен присутствовать Веб интерфейс. – Система должна иметь возможность извлекать данные анализа для визуализации через API или иметь средство визуализации данных анализа.

С++ библиотека компонентов генетических алгоритмов

Готовый файл библиотеки теперь доступен для решения оптимизационных задач с помощью генетических алгоритмов. Чтобы решать задачи с помощью данной библиотеки, создается новый проект, подключается файл библиотеки Library.lib, подключаются заголовочные...

Задать вопрос