Производительность создания изображений / кэширование изображений - PullRequest
1 голос
/ 14 апреля 2010

Я пишу приложение (J2ME MIDlet) с прокручиваемым изображением (используется для отображения карты). Фон карты состоит из нескольких плиток (созданных из большого файла JPG), которые я рисую на графическом объекте.

Я также использую кеш (Hashtable), чтобы не создавать каждый образ, когда он мне нужен. Я не храню все в памяти, потому что это было бы слишком много.

Проблема в том, что когда я прокручиваю карту и мне нужно изображение, которое не было кэшировано, его создание занимает около 60-80 мс. В зависимости от разрешения экрана, размера тайла и направления прокрутки, это может происходить несколько раз за одну операцию прокрутки (для разных тайлов). В моем случае часто случается, что это нужно сделать 4 раза, что приводит к задержке более 300 мс, что очень заметно.

Самым простым для меня было бы то, что есть какой-то способ ускорить создание образов, но я думаю, это просто желаемое за действительное ...

Кроме того, я полагаю, что наиболее очевидная вещь, которую нужно сделать, - это загружать тайлы с предсказанием (например, при прокрутке вправо, предварительно кэшировать тайлы вправо), но затем я сталкиваюсь с довольно сложной задачей придумать приличный алгоритм для этого.

Мой вопрос : как мне лучше всего выполнить эту прогностическую загрузку? Может быть, я мог бы переложить создание изображений в отдельный поток? Другие вещи, чтобы рассмотреть?

Заранее спасибо.


Достигнут некоторый прогресс, хотя он все еще не оптимален.

Добавление новой плитки в кеш теперь выполняется в отдельном потоке, и я просто рисую пустую плитку с одинаковыми размерами. Когда плитка будет создана и кэширована, она будет нарисована. Прямо сейчас это не произойдет до следующего перерисовки, хотя не должно быть трудно заставить перерисовку, как только плитка загружена (не знаю, будет ли это эффективно, протестируем).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...