Я работаю над проектом, в котором мне нужно получить конечные значения от пользователя с минимально возможной задержкой. Пользовательский ввод - это серия ползунков с целочисленными значениями от 0 до 100 (поэтому мне все равно за пределами этого диапазона).
Это оригинальная настройка (псевдокод, но проект написан на swift 5 для запуска на macOS)
final = max(a*A, b*B, s1*S1, s2*S2, ... s8*S8)
значения в нижнем регистре гарантированно не изменяются требуемым образом (но могут быть изменены пользователем в любое время, поэтому не могут быть жестко закодированы)
если строчные буквы a или b меняются, то это выполняется один раз.
если изменяется верхний регистр A, B или S, то это выполняется 32 раза.
Первоначальное переосмысление:
sValue = max (s1*S1 ... s8*S8) //this would only run when one of the S values changes
final = max (a*A, b*B, sValue)
Рекомендация друга:
создать словарь (хеш-таблицу) с массивом Int в качестве ключа и конечным значением в качестве значения; тогда сделай поиск. Этот словарь может быть построен при запуске программы (можно прикрепить его за экраном загрузки)
Итак, что является лучшим решением с точки зрения производительности: словарь с массивом в качестве ключей или каждый раз запуск функции max?
Или у кого-нибудь есть другие рекомендации?