В уже старой статье я показывал десериализацию json в объект и многие обратили внимание на то, что для массива я использую for, хотя проще использовать map.
Пришло время понять что же лучше map или for и понимать мы это будем с помощью бенчмарков.
Погнали
Использовать мы будем библиотеку benchmarking
К сожалению это не те бенчмарки, к которым я привык из net core. Все, что мы можем увидеть это время выполнения, но в принципе нам этого может хватить.
Окей. я хочу посмотреть, как лучше перебирать элементы массива - с помощью цикла for или с помощью map.
В файле main.dart добавляем импорт
import 'package:benchmarking/benchmarking.dart';
И пишем методы для бенчмарков
Пройдемся построчно
22,23,24,25 - не стоит обращать на них внимания просто остались из примера библиотеки
28, 30, 32 - получаем массив из json
36 - первый замер - перебираем элементы с помощью for
40 - второй замер - перебираем элементы с помощью map
И видим результат
оба цикла отрабатывают слишком быстро. НО! Разницу все равно можно увидеть и меня результат удивил. За 2 секунды map отработал в 8 раз чаще. Ну соответственно метод map в 8 раз быстрее.
Пойду ревьюить весь свой код....
Я все сделал в main. Но лучше бенчмарки запускать в тестах. Более подробнее о тестах здесь
Тест выглядит следующим образом
Смысл тот же
Как то так...
Очень часто кажется, что это все не важно - все и так быстро работает, куда еще быстрее. Но если посмотреть на этот пример через призму реальной жизни - у вас есть кафе и за день оно может обслужить 6 миллионов человек или 48. Вы бы что выбрали ?
Пишите ответы в комментариях. И ставьте лайки.
Спасибо за внимание!