Главное меню

Сравнительное исследование производительности циклов for и foreach на платформе .NET (6.0, 7.0) C# PDF Печать E-mail
Автор: Габдуллин Д.Р.,Тазетдинов Б.И.   
14.03.2024 09:48


СРАВНИТЕЛЬНОЕ ИССЛЕДОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ЦИКЛОВ FOR И FOREACH НА ПЛАТФОРМЕ .NET (6.0, 7.0) C#

 

Габдуллин Д.Р., студент 2 курса,

Бирский филиал УУНиТ, г. Бирск, Россия

Тазетдинов Б.И., к.ф.-м.н., доцент,

Бирский филиал УУНиТ, г. Бирск, Россия

 

Аннотация. В статье проведено сравнительное исследование производительности работы циклов for и foreach при работе с массивами и коллекциями в среде .NET. Построена таблица результатов исследования и сделаны соответствующие выводы.

Ключевые слова: циклы for и foreach, производительность работы циклов.

 

Применение циклов в программировании широко распространено. В частности циклы используются при работе с массивами и коллекциями. К примеру, при работе с массивами и коллекциями на языке программирования C#, чаще всего применяются циклы for и foreach. Поэтому была поставлена задача о сравнительном исследовании производительности циклов for и foreach по скорости работы.

Постановка задачи заключалась в следующем: изначально были созданы массив и коллекция типа list размерностью 150 элементов. Каждый элемент из себя представлял целое число, сгенерированное случайным образом в диапазоне от 0 до 199.

Эксперимент заключался в следующем: первоначально сформированные массив и список перебирались с помощью циклов for и foreach в различных .NET платформах версии 6.0 и 7.0 на языке программирования C#. Для каждого случая перебора проводилось как минимум 10 тестовых запусков, при каждом запуске вычислялось время работы перебора. Затем вычислялось среднее значение для каждого отдельного случая. Результат эксперимента представлен в таблице 1 ниже. При создании тестовых программ, в качестве справочных материалов использовались литературные источники [1-4].

Таблица 1

Результат численного сравнительного эксперимента на время работы циклов for и foreach в различных платформах .NET C#

Цикл

Версия платформы .NET

Среднее время, нс. (массив/список)

For

6.0

25.52/32.96

Foreach

6.0

15.87/49.89

For

7.0

24.37/32.25

Foreach

7.0

15.71/36.08

   

Из таблицы 1 видно, что время перебора массива для циклов for и foreach на платформах 6.0 и 7.0 несколько быстрее, чем перебор списков. В свою очередь перебор массива циклом foreach реализуется быстрее в среднем на 40%, чем цикл for. А при переборе списков цикл for работает быстрее, чем цикл foreach, для платформы .NET 6.0 примерно на 35% быстрее, .NET 7.0 на 12% соответственно.

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

 

Литература

1.     Metanit (Циклы C#) [Электронный ресурс] // metanit.com: URL: https://metanit.com/sharp/tutorial/2.6.php?ysclid=ltpvw7r7pw860442554 (дата обращения: 13.03.2024) 
2.     Metanit (Шаблон итератор) [Электронный ресурс] // metanit.com:        URL: https://metanit.com/sharp/patterns/3.5.php?ysclid=ltpw1jh1cd266237822 (дата обращения: 13.03.2024)
3.     Zetcode (Библиотека Benchmark) [Электронный ресурс] // zetcode.com: URL: https://zetcode.com/csharp/benchmark/ (дата обращения: 13.03.2024)
4.     Metanit (Пособие C#) [Электронный ресурс] // metanit.com: URL: https://metanit.com/sharp/tutorial/?ysclid=ltpw75suf785366536 (дата обращения: 13.03.2024)
 

 



Обновлено 14.03.2024 10:01
 
Яндекс.Метрика