Сравнение библиотек создания документов формата docx для языка программирования Golang
Автор: Брянцев А.А., Завтур П.С.
Журнал: Международный журнал гуманитарных и естественных наук @intjournal
Рубрика: Технические науки
Статья в выпуске: 9-1 (96), 2024 года.
Бесплатный доступ
Существует множество библиотек для разных языков программирования позволяющих создавать и модифицировать файлы формата .docx. Отличие в скорости работы популярных библиотек для языка программирования Golang не было хорошо изучено. Мы рассмотрели три востребованные библиотеки: ooxml, docxlib, unioffice, чтобы лучше понять, какая из них лучше и определить преимущества каждой из библиотек. Возможны разные сценарии применения данных библиотек. Для лучшего выбора необходимо знать, насколько библиотеки различаются в затратах на их использование. Был проведен сравнительный анализ по критерию времени генерации документов и их веса.
Библиотека
Короткий адрес: https://sciup.org/170207095
IDR: 170207095 | DOI: 10.24412/2500-1000-2024-9-1-124-126
Текст научной статьи Сравнение библиотек создания документов формата docx для языка программирования Golang
В мире программирования современных приложений эффективная работа с документами является неотъемлемой частью функциональности. Формат docx, пользующийся широкой популярностью в рабочих и образовательных средах, требует надежных инструментов для создания, редактирования и форматирования. Язык программирования Golang (или Go) привлекает внимание разработчиков своей производительностью и удобством, стимулируя поиск оптимальных библиотек для работы с данным форматом.
Данное исследование представляет собой сравнительный анализ библиотек, предназначенных для создания docx-документов в среде Golang. Акцент делается на анализе основных функциональных возможностей, производительности, удобства в использовании, гибкости кастомизации и поддержки актуальных стандартов формата docx.
Цель настоящего исследования – предоставить разработчикам убедительное сравнение различных библиотек, которые могут быть использованы для генерации docx-файлов в Golang, обеспечивая информацию, необходимую для выбора наиболее подходящего инструмента в зависимости от конкретных требований и целей проекта.
docx, ooxml, docxlib, unioffice.
Методы и организация исследования
Для проведения данного тестирования использовалась небольшая программа собственного написания на языке Golang, фиксирующая начало работы и окончание исполнение команд, относящихся к библиотекам ooxml, docxlib, unioffice.
Критериями сравнения были: скорость создания документов, простота использования библиотек. Данные критерии были выделены, как наиболее важные для сравнения. Скорость создания документов является важным критерием при выборе библиотеки для работы с docx в Golang. Однако, следует помнить, что скорость не должна быть единственным критерием, и ее следует сбалансировать с другими параметрами, например, простота использования библиотек. Простота использования библиотеки является важным критерием при выборе инструмента для работы с .docx в Golang. Однако, важно учитывать, что простота использования не должна жертвовать функциональностью или гибкостью библиотеки, поэтому баланс между удобством и предоставляемыми возможностями также играет важную роль при принятии решения о выборе конкретной библиотеки.
Каждая библиотека была протестирована в двух сценариях использования: файлы с простым текстом, файлы с форматированием, файлы с использованием графических материалов.
Тест «файлы с простым текстом» поможет оценить производительность и надежность библиотеки при многократном создании простых документов, что может быть важным фактором при выборе инструмента для создания и обработки документов в формате .docx в Golang.
Тест «файлы с форматированием» поможет разработчикам оценить возможно- сти библиотеки для работы с форматированием текста в .docx-документах. Использование различных параметров форматирования позволит убедиться в правильности применения стилей и атрибутов текста, что является важным аспектом при выборе библиотеки для работы с документами в Golang.
Результаты и их обсуждение.
По результатам тестирования были получены соответствующие результаты, приведенные ниже в таблицах 1-4.
Таблица 1. Сводная таблица затраченного времени для различного количества документов
Кол-во файлов |
ooxml, сек |
docxlib, сек |
unioffice, сек |
1 |
0,0021 |
0,0016 |
0,0021 |
10 |
0,0144 |
0,0160 |
0,0165 |
50 |
0,0642 |
0,0813 |
0,0700 |
100 |
0,1265 |
0,1646 |
0,1206 |
500 |
0,6849 |
0,9669 |
0,7027 |
1000 |
1,3110 |
1,7737 |
1,3896 |
Таблица 2. Сводная таблица затраченного времени на создание одного большого доку- мента
t, сек |
Библиотека |
0,0853351 |
ooxml |
0,0624579 |
docxlib |
0,0699724 |
unioffice |
Таблица 3. Сводная таблица затраченного времени на создание одного простого документа
t, сек |
Библиотека |
0,0020691 |
ooxml |
0,0010290 |
docxlib |
0,0015658 |
unioffice |
Таблица 4. Сводная таблица веса одного документа
Простой, Кб |
Большой, Кб |
Библиотека |
4,95 |
1375 |
ooxml |
8,34 |
1380 |
docxlib |
4,93 |
1375 |
unioffice |
Исходя из полученных результатов библиотека docxlib показала лучшие результаты при создании одного документа, однако при множественном создании документов результаты являются худшими относительно других библиотек. В сравнение весов библиотека docxlib показала себя значительно хуже остальных, разница результатов остальных библиотек составляет погрешность.
По интерфейсу используемые библиотеки являются очень похожими и в большинстве случаев отличаются в наименовании функций, но не их структура.
Вывод
По результатам всех тестов и их анализа мы пришли к выводу, что самой выгодной библиотекой является unioffice. Данная библиотека хоть и проигрывает docxlib в скорости генерации одного документа, однако вес получаемого файла значительно меньше. Все рассмотренные библиотеки требования к скорости создания или весу простые в использовании и для разных си- файла.
туаций можно подобрать подходящую под
Список литературы Сравнение библиотек создания документов формата docx для языка программирования Golang
- Донован, Алан А.А., Керниган, Брайан. Язык программирования Go.: Пер. с англ. - М.: ООО "И.Д. Вильямс", 2016. - 432 с.
- Индрасири Касун, Курупу Данеш, gRPC: запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes. - СПб.: Питер, 2021. - 224 с.
- Клеппман М., Высоконагруженные приложения. Программирование, масштабирование, поддержка. - СПб.: Питер, 2019. - 640 с.: - (Серия "Бестселлеры O'Reilly").
- Петров Алекс, Распределенные данные. Алгоритмы работы современных систем хранения информации. - СПб.: Питер, 2021. - (Серия "Бестселлеры O'Reilly").
- Адам Фриман, Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang 1st ed. Edition,. ISBN: 978-1-4842-7354-8