Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 10.11.2008, 18:31   #1
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
вопрос на засыпку =)

кодеры подскажыте что лучше будет для программы:
1) загружать изображения из ресурса в переменные а потом работать с ними?

или

2) напрямую загружать картинки из ресурса каждый раз(drawImage(loadImage('/бла_бла_бла.png'), 0, 0))?


я думаю шо если загружать в переменные то соответственно память будет выделятсо и будет лагать, но я не шарю потому мне кажетсо шо второй вариант лучше
(Offline)
 
Ответить с цитированием
Старый 10.11.2008, 18:38   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: вопрос на засыпку =)

скорость/расход памяти(что в последствии может повлиять и на скорость)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 10.11.2008, 19:46   #3
ARV
ПроЭктировщик
 
Регистрация: 25.12.2006
Сообщений: 163
Написано 7 полезных сообщений
(для 12 пользователей)
Ответ: вопрос на засыпку =)

имхо, первый вариант более быстродействующий.
при втором варианте как раз наоборот, будет выделяться и освобождаться память неизвестно как (в какие-то внутренние переменные Java-кода), так что если одна и та же картинка рисуется неоднократно - загрузить ее внчале в переменную и затем по мере надобности использовать.
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 01:38   #4
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: вопрос на засыпку =)

но ето будет жрать память...? у меня итак масив будет один розмером 320х240 =)
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 02:04   #5
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: вопрос на засыпку =)

Смотря сколько изображений, как часто они отрисовываются, сколько раз используется одно изображение и сколько оперативки у телефона.
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 02:07   #6
Frank
Нуждающийся
 
Аватар для Frank
 
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений
(для 19 пользователей)
Ответ: вопрос на засыпку =)

Я считаю так, что если картинку нужно использовать всего один раз, то пойдет и второй вариант, иначе - первый...
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 04:00   #7
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: вопрос на засыпку =)

а освобождать както ети переменные с картинками можнО? шоб они память не жрали=)
типа присвоить nill =)
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 08:25   #8
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от beZ_probleM Посмотреть сообщение
а освобождать както ети переменные с картинками можнО? шоб они память не жрали=)
типа присвоить nill =)
Да. Можно. Есть библиотека Lib_memclean и в ней единственная функция clean, которая и делает очистку памяти от неиспользуемых ресурсов.
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 16:37   #9
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: вопрос на засыпку =)

тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 19:35   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от beZ_probleM Посмотреть сообщение
тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
Я в теме приводил пример использования. Суть в том, что объявляется дополнительный объект image, который не загружается. Далее для удаления изображения из памяти достаточно присвоить ему этот пустой объект и вызвать функцию очистки.
(Offline)
 
Ответить с цитированием
Старый 14.11.2008, 03:18   #11
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от beZ_probleM Посмотреть сообщение
тоесть? а как она узнает шо я тот ресурс не буду использовать больше? оО
Да очень просто. На самом деле в переменной типа картинка хранится не сама картинка, а адрес в оперативке, по которому она находится. При загрузке новой картинки, мобила выделяет нужное место в оперативке, переписывает туда картинку, а адрес первого байта этой картинки записывает в переменную. Вся фишка в том, что старая картинка при этом так и остаётся в оперативке, хотя ни одна переменная на эту область не ссылается. Старая картинка получается тупо засоряет оперативную память. Когда же оперативки становится мало, телефон запускает процесс под названием Garbage Collector (Сборщик Мусора). Он просто сверяет занятые участки в оперативке и текущие переменные и если обнаруживает, что на какой-то ресурс (например, картинку) в памяти не ссылается ни одна переменная, то этот ресурс считается мусором и подлежит удалению. Библиотека Lib_memclean просто вызывает Сборщика Мусора досрочно, не дожидаясь когда же оперативки будет мало.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
beZ_probleM (14.11.2008)
Старый 16.11.2008, 23:35   #12
ARV
ПроЭктировщик
 
Регистрация: 25.12.2006
Сообщений: 163
Написано 7 полезных сообщений
(для 12 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от odd Посмотреть сообщение
Библиотека Lib_memclean просто вызывает Сборщика Мусора досрочно, не дожидаясь когда же оперативки будет мало.
судя по тому, как реализован сборщик мусора в Java, нет никакой гарантии, что уборка начнется сразу после вызова этой функции (поправьте, если не прав). Вызов уборщика - это именно "вызов", как звонок в скорую а уж когда она приедет - это еще вопрос... я хочу сказать, что система, получив указание почистить память, вполне может еще подумать и приступить к уборке тогда, когда ей покажется это наиболее удобным.
(Offline)
 
Ответить с цитированием
Старый 17.11.2008, 00:55   #13
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от ARV Посмотреть сообщение
судя по тому, как реализован сборщик мусора в Java, нет никакой гарантии, что уборка начнется сразу после вызова этой функции (поправьте, если не прав). Вызов уборщика - это именно "вызов", как звонок в скорую а уж когда она приедет - это еще вопрос... я хочу сказать, что система, получив указание почистить память, вполне может еще подумать и приступить к уборке тогда, когда ей покажется это наиболее удобным.
Нет, очистка происходит именно при вызове функции(во всяком случае, так должно быть на нормальных телах).
(Offline)
 
Ответить с цитированием
Старый 17.11.2008, 04:10   #14
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: вопрос на засыпку =)

ViNT, а я тоже много где слышал, что при вызове сборщика мусора он не обязательно сразу вызовется. Там типа такой же прикол, как, например, с обработкой клавиш бывает. Клавишу в некоторых играх нажимаешь, а отклик запаздывает или вообще не всегда происходит. Это типа если несколько плотных потоков работает, то для спящих потоков не хватает квантов времени процессора для того, чтобы проснуться и начать работать.
(Offline)
 
Ответить с цитированием
Старый 17.11.2008, 21:08   #15
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: вопрос на засыпку =)

Сообщение от Phantom_wc Посмотреть сообщение
ViNT, а я тоже много где слышал, что при вызове сборщика мусора он не обязательно сразу вызовется. Там типа такой же прикол, как, например, с обработкой клавиш бывает. Клавишу в некоторых играх нажимаешь, а отклик запаздывает или вообще не всегда происходит. Это типа если несколько плотных потоков работает, то для спящих потоков не хватает квантов времени процессора для того, чтобы проснуться и начать работать.
Ну это уже другой вопрос. Сборщик мусора, скорее всего, действительно работает в фоновом режиме, тогда нужно вызывать его когда процессор не загружен, т.е. не выполняются сложные вычисления.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос Черный крыс BlitzMax 1 31.03.2009 09:30
Вопрос Akima Наш форум 5 31.12.2006 18:09
еще вопрос SubZer0 Программирование 2 12.07.2006 21:47
Вопрос на засыпку SubZer0 Болтовня 12 15.03.2006 19:26


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com