forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Эксперименты с мидлетом (http://forum.boolean.name/showthread.php?t=14727)

PassCall 14.05.2011 00:29

Эксперименты с мидлетом
 
Както раз решил поподробнее узнать возможности своего телефона (а заодно и мидлета).

И решил провести эксперименты.

Опыт 1.
Возьмем картинку размерами 3000x3000. Просто белый квадрат. Сохраняем в пнж с минимальным количесвтом цветов , чтобы получить максимальное сжатие. Полученный размер картинки - около 8 килобайт. Создаем простейший мидлет, который эту картинку грузит (img:=loadimage('/123.png'); Компилируем, скидываем на телефон и запускаем. Сразуже выбивает ошибку "OUT OF MEMORY", что означает нехватки памяти.
ВЫВОД: если картинка весит 8 килобайт, то это не значит что она и в памяти (какбэ оперативной - у мобильника в качестве оперативки используется обычная память телефона) она будет занимать 8 килобайт. Дело в том, что для пущего быстродействия мидлет "распаковывает" пнж в простой битмап образ. Чтобы при каждом обращении к картинке не пришлось распаковывать картинку заново.

Опыт 2. Возьмем и засунем в мидлет файл большого размера (например 2 мегабайта).
Проверить, что случится при запуске, не удалось - телефон даже не запустил мидлет: "испорченное приложение". Видно, не нравится сам размер файл. Ладно, скинем пнж размером 600 кб. Скидываем. Мидлет запустился. Теперь попробуем загрузить картинку в память. Выкидывает с ошибкой.
ВЫВОД: картинка преобразуется в битмап образ только при загрузке. Если же картинка просто будет лежать в архиве - это не страшно.

Опыт 3: что выгоднее - хранить картинки по отдельности или создать 1 большую картинку, а потом вырезать с помощью imagefromimage? Что будет весить меньше: сумма картинок или один тайлсет?
Было отобрано 25 картинок.
Эксперимент показал, что выгоднее иметь один тайлсет, чем множество картинок, где то на 50%. Правда, при большом размере тайлсета может уменьшится качество, так как количество цветов может превысить 256 и придется уменьшать его до 256. Выход - разделить тайлсет на несколько, и сгруппировать в одном тайлсете тайлы одного тона (например, в одном тайлсете - цветные, в другом - монохромные).

В следующий раз я проведу еще пару опытов.
Спасибо за прочтение!

Nerd 14.05.2011 00:53

Ответ: Эксперименты с мидлетом
 
Цитата:

Опыт 1.
facepalm
Цитата:

Опыт 2
facepalm
Цитата:

Опыт 3
выгоднее иметь один тайлсет, чем множество картинок, где то на 50%
В каком смысле? В памяти будут весить одинакого, внутри архива тоже. В чем выгода?

impersonalis 14.05.2011 03:16

Ответ: Эксперименты с мидлетом
 
Цитата:

Сообщение от Nerd96 (Сообщение 188395)
В каком смысле? В памяти будут весить одинакого, внутри архива тоже. В чем выгода?

Вероятно, делается попытка провести аналогию с ФС ПК: дискретизация по размеру кластера приводит к тому, что, например, файл размером 1 байт занимает на диске 1Кб. Т.о. поместив (упаковав в режиме store) 1024 файла по байту (опять-таки, приняв кластер равным 1Кб) мы займём на диске столько же места, сколько весит файл в 1 байт. Иными словами: при архивации, уже сам факт конкатенации файлов в один контейнер-объект, позволяет выиграть место.
Не возьмусь судить о специфике адресации и хранения файлов в трубках.

Igor 14.05.2011 22:08

Ответ: Эксперименты с мидлетом
 
Открою секрет: загруженная в память картинка занимает по 4 байта на пиксель - 3 rgb и альфа.

nil0q 15.05.2011 22:02

Ответ: Эксперименты с мидлетом
 
Цитата:

Сообщение от Igor (Сообщение 188483)
Открою секрет: загруженная в память картинка занимает по 4 байта на пиксель - 3 rgb и альфа.

А вот и не факт :stop:
Например, на телефонах SE в приложениях используется режим 65536 цветов и 32 ступени прозрачности, т.е. R - 5 bit, G - 6 bit, B - 5 bit, A - 5 bit, всего 21 bpp. Вот так :dontknow:
Проверено с помощью Java Info от Gray Wolf & Odd

Igor 16.05.2011 00:16

Ответ: Эксперименты с мидлетом
 
Вложений: 2
вот только сейчас узнал: эти две картинки практически одинакового размера, разница 53 байта, а вот пустое прозрачное поле в некоторых случаях существенно упрощает отрисовку - не надо брать поправок по х и у.
(Чтобы увидеть разницу выделить картинки)


Часовой пояс GMT +4, время: 02:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot