Емпіричний аналіз енергоефективності контейнерів C++ STL
DOI:
https://doi.org/10.20535/1560-8956.48.2026.351892Ключові слова:
C , STL, енергоефективність, AMD PMCАнотація
Проблема енергоефективності програмного забезпечення є ключовою для Green Software Engineering. Вибір структур даних лише за асимптотичною складністю ( -нотацією) часто ігнорує вплив ієрархії кеш-пам'яті процесора. Метою роботи є підвищення енергоефективності C++ програм шляхом обґрунтованого вибору контейнерів STL. Розроблено методику вимірювання «чистого» енергоспоживання (CPU Package Energy) з використанням лічильників AMD PMC та утиліти perf (Linux), яка ізолює вартість алгоритму від витрат на ініціалізацію. Об’єктами дослідження стали vector, list, deque, map, unordered_map. Експериментально встановлено, що для ітерації std::vector є найефективнішим завдяки кеш-локальності, тоді як std::map споживає в 10 разів більше енергії. У задачах пошуку std::unordered_map дозволяє знизити витрати до рівня похибки вимірювання, маючи абсолютну перевагу над лінійним пошуком у vector. Виявлено високу енергетичну ціну масової вставки в unordered_map через перегешування. Результати дозволяють зменшити енергетичний слід ПЗ без зміни логіки.
Бібл. 5, іл. 0, табл. 1
Посилання
Josuttis N.M. The C++ Standard Library: A Tutorial and Reference (2nd Edition). Addison-Wesley Professional, 2012.
Kalliainen A., Vanhala E. Why you can't trust the O-notation: a case study of C++ STL containers. In: Companion of the 2018 ACM/SPEC International Conference on Performance Engineering (ICPE '18). ACM, 2018. – Pp. 9-12.
Rahman A.K.M.A. Big-O Notation. In: A Guide to C++ Programming. Apress, 2018. – Pp. 1-13.
Pereira R., Couto M., Ribeiro F., et al. Energy efficiency across programming languages. In: Proceedings of the 2nd International Conference on Reproducible Research in Computational Science (RECS). 2017. – Pp. 1-10.
de Melo A.C. The New Linux 'perf' tools. In: Proceedings of the Linux Kongress. 2010. – Pp. 1-28.
##submission.downloads##
Опубліковано
Номер
Розділ
Ліцензія

Ця робота ліцензується відповідно до Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
1.Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution License, котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у нашому журналі.
2. Автори мають право укладати самостійні додаткові угоди щодо неексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована нашим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у нашому журналі.
3. Політика журналу дозволяє і заохочує розміщення рукопису роботи авторами в мережі Інтернет (наприклад, на arXiv.org або на особистих веб-сайтах). Причому рукописи статей можуть бути розміщенні у відкритих архівах як до подання рукопису до редакції, так і під час його редакційного опрацювання. Це сприяє виникненню продуктивної наукової дискусії, позитивно позначається на оперативності ознайомлення наукової спільноти з результатами Ваших досліджень і як наслідок на динаміці цитування вже опублікованої у журналі роботи. Детальніше про це: The Effect of Open Access.