Пришло время делать эксперименты. Продолжайте в том же проекте, в файле ExperimentsTask.cs
Эксперимент 1. Создание массива
В файле ArrayCreationTasks.cs
есть две реализации уже знакомого вам интерфейса ITask для работы с классом Benchmark.
Оба класса создают массив в методе Run. Но один делает массив структур, а второй массив классов.
В классе ExperimentsTask
реализуйте метод BuildChartDataForArrayCreation
.
Этот метод должен измерять длительность работы метода Run у классов StructArrayCreationTask
и ClassArrayCreationTask
с помощью Benchmark из прошлого задания.
Нужно измерить время для структур и классов всех размеров, указанных в Constants.FieldCounts
.
Результаты измерения вернуть в виде объекта ChartData. Дальше в Program.cs эти результаты будут показаны на графиках.
Запустите код на исполнение. Вы должны увидеть первый график скорости работы от количества полей в классе/структуре. На нём должно быть видно, что массивы классов создаются дольше, чем массивы структур.
Эксперимент 2. Передача в метод
Аналогично в файле MethodCallTasks.cs
есть ещё пара реализаций ITask.
Они вызывают метод, передавая в качестве аргумента класс или структуру с большим количеством полей.
В том же классе ExperimentsTask
реализуйте метод BuildChartDataForMethodCall
.
Избавьтесь от дублирования кода в методах BuildChartDataForMethodCall
и BuildChartDataForArrayCreation
.
Возможно, для этого понадобится создать новые классы.
Запустите код на исполнение. Вы должны увидеть второй график, показывающий, что большие классы передаются в метод быстрее, чем большие структуры.
Попробуйте объяснить наблюдаемый результат.
1 2 3 4 5 6 7 8 |
// Вставьте сюда финальное содержимое файла ExperimentsTask.cs using System.Collections.Generic; namespace StructBenchmarking { public class Experiments { |
Стоимость решения этой задачи всего 100 рублей, купи решения у меня 🙂