Size: a a a

Programming Offtop

2020 March 21

ГТ

Г. Т. Лафориак in Programming Offtop
я б отдавал high-ppi тупо, т.е 128 для 32рх и не парился
источник

I

Igor in Programming Offtop
Alexander Nozik
Там еще надо учесть, что у вас будет разная вероятность разных плотностей, так что надо сначала набрать данные по этой частоте
Статистики точно нету, пока можно игнорить
источник

ГТ

Г. Т. Лафориак in Programming Offtop
статистика есть у меня, вот прямо сейчас открыл
источник

I

Igor in Programming Offtop
Г. Т. Лафориак
я б отдавал high-ppi тупо, т.е 128 для 32рх и не парился
не заботишся о трафике 🤔
источник

ГТ

Г. Т. Лафориак in Programming Offtop
320 <1%
источник

ГТ

Г. Т. Лафориак in Programming Offtop
можно в бэкграунде еще а не на лету пережимать
источник

AN

Alexander Nozik in Programming Offtop
Короче, берем выборку реальных запросов - штук тысчу. Для первой оценки можно взять всех по одному, но потом точно надо будет делать реальную выборку. Дальше берем десять разрешений в качестве параметров и строим функцию, которая для каждого запроса будет искать ближайшее из кэша в зваисимости от параметров. Параметры кстати можно сделать непрервывными для удобства, просто потому что непрерывные проще оптимизировать и прогоняем через любой оптимизатор. Сложность там будет типа 1000*10*100. Считаться будет достаточно быстро
источник

ГТ

Г. Т. Лафориак in Programming Offtop
и плотностей всего 2 в принципе
источник

ГТ

Г. Т. Лафориак in Programming Offtop
хай и лоу
источник

AN

Alexander Nozik in Programming Offtop
От распределения в выборке результат будет очень сильно зависеть
источник

ГТ

Г. Т. Лафориак in Programming Offtop
детектишь плотность экрана юзера и отдаешь что надо ему
источник

ГТ

Г. Т. Лафориак in Programming Offtop
изи
источник

I

Igor in Programming Offtop
Пока что такое округление сделал

let round (width : int) : int =
   let n = 1.199              // волшебное число, основание (подбором нашел)
   Math.Log(float width, n)   // считаем логариф по основанию 1.199
   |> Math.Floor              // округляем к целому
   |> fun p -> Math.Pow(n, p) // 1.199 возводим в степень
   |> int                     // переводим в целое число


Для диапазона [32 .. 1000] дает такие результаты (20 классов)
[31; 37; 45; 54; 64; 77; 93; 112; 134; 161; 193; 231; 277; 332; 399; 478; 573; 687; 824; 988]
источник

I

Igor in Programming Offtop
https://i.gyazo.com/b4b262eeebbd24ad3730913ebb691760.png

average (от деления) = 0.914210
stdDev (отклонение) = 0.04793
источник

ГТ

Г. Т. Лафориак in Programming Offtop
источник

I

Igor in Programming Offtop
https://www.meme-arsenal.com/memes/dc93eb069125480917d081e73fbf00e9.jpg

Ну реально, что-то подсказывает что это экспонента
источник

AN

Alexander Nozik in Programming Offtop
Если нужно решение попроще, то берем опять же распределение запросов, интегрируем его и получаем нормировку. Делим на N. Дальше ищем регионы, интеграл в которых составляет 1/N. Ищем цетр масс по этим регионам - будет хорошо
источник

AN

Alexander Nozik in Programming Offtop
Если нужно оптимизировать не расстояние, а именно отношение, то перед предыдущим пунктом прологарифмировать данные.
источник

AN

Alexander Nozik in Programming Offtop
О, с логарифмом это будет точное решение исходной задачи. Неожиданно. Отменить оптимизацию
источник

I

Igor in Programming Offtop
Вот тут видно, что размер возвращаемой картинки отличается максимум на 16% (в меньшую сторону) от запрашиваемого
источник