Найти в Дзене
Тарасов

Flutter. Benchmark. For или Map.

Оглавление

В уже старой статье я показывал десериализацию json в объект и многие обратили внимание на то, что для массива я использую for, хотя проще использовать map.

Как подружить Flutter с Rest Api
Полный.Застрял.Разработать()17 марта 2023

Пришло время понять что же лучше map или for и понимать мы это будем с помощью бенчмарков.

Погнали

Использовать мы будем библиотеку benchmarking

benchmarking | Dart Package

К сожалению это не те бенчмарки, к которым я привык из net core. Все, что мы можем увидеть это время выполнения, но в принципе нам этого может хватить.

Окей. я хочу посмотреть, как лучше перебирать элементы массива - с помощью цикла for или с помощью map.

В файле main.dart добавляем импорт

import 'package:benchmarking/benchmarking.dart';

И пишем методы для бенчмарков

-2

Пройдемся построчно

22,23,24,25 - не стоит обращать на них внимания просто остались из примера библиотеки

28, 30, 32 - получаем массив из json

36 - первый замер - перебираем элементы с помощью for

40 - второй замер - перебираем элементы с помощью map

И видим результат

-3

оба цикла отрабатывают слишком быстро. НО! Разницу все равно можно увидеть и меня результат удивил. За 2 секунды map отработал в 8 раз чаще. Ну соответственно метод map в 8 раз быстрее.

Пойду ревьюить весь свой код....

Я все сделал в main. Но лучше бенчмарки запускать в тестах. Более подробнее о тестах здесь

Flutter и Rest Api. Отладка тестами.
Полный.Застрял.Разработать()18 марта 2023

Тест выглядит следующим образом

-4

Смысл тот же

Как то так...

Очень часто кажется, что это все не важно - все и так быстро работает, куда еще быстрее. Но если посмотреть на этот пример через призму реальной жизни - у вас есть кафе и за день оно может обслужить 6 миллионов человек или 48. Вы бы что выбрали ?

Пишите ответы в комментариях. И ставьте лайки.

Спасибо за внимание!