Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171

Как узнать сколько памяти потребляет CreateImage?

25.04.2021, 23:59. Показов 2540. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Вопрос собственно элементарный. При создании изображения требуется память и судя по моим экспериментам немаленькая...
А вот можно ли как-то просчитать или выяснить сколько занимает(или будет занимать CreateImage)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2021, 23:59
Ответы с готовыми решениями:

Как узнать сколько программа занимает памяти ?
открываю Connect с Access (ADO) по таймеру идет Execute на UPDATE или INSERT это жутко жрет память, может это нормальное явление ?? ...

Как узнать сколько (памяти) ресурсов потребляет программа
Как можно количество потребляемой памяти (и других ресурсов) посмотреть? IDE NetBeans

Как узнать сколько потребляет оперативной памяти приложение при работе
Как узнать сколько потребляет оперативной памяти приложение при работе, что то по аналогии System.Diagnostics.Stopwatch. например...

29
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.04.2021, 00:15
Зависит от параметров изображения. Берём формат RGB - 3 байта на пиксель, вот и считайте.
Для FullHD 1920x1080X3 = 6220800 байт в памяти.
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
26.04.2021, 20:08  [ТС]
Pro_grammer, Оно, конечно, логично. Сам рассуждал таким же образом, но когда начал экспериментировать с CreateImage, обнаружилось странное....
Создаю холст размерами скажем (10,10) и 0.5 Мб как корова языком слизала. Увеличиваю....Ну скажем до (20,10) - проверяю по диспетчеру раздач - те же самые 0.5 Мб.... Хорошо... уменьшаю до (1,1) и опять 25, ну, а точнее 0.5Мб.
Снова увеличиваю и до определенного момента остаётся всё таже цифра... После увеличения до некоторого "порога" CreateImage начинает кушать уже 1Мб и опять же это число не меняется до определенного порога....
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.04.2021, 20:37
Цитата Сообщение от nigri_lupus Посмотреть сообщение
После увеличения до некоторого "порога" CreateImage начинает кушать уже 1Мб и опять же это число не меняется до определенного порога.
Надо смотреть как устроена функция CreateImage на уровне API. Я этого не знаю, но думаю, что то из CreateCompatibleBitmap, прочитать как там всё устроено.
А для чего это требуется?
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
26.04.2021, 21:04  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А для чего это требуется?
Ну, первое и главное. Для подстраховки... Нет, не поймите меня неправильно... Я знаю, что можно, что можно написать "if CreateImage" это, конечно даст возможность избежать ошибки, но вок как быть, если он нужен, а открываться он не хочет????( как раз тот случай, когда "if not CreateImage") и....? Думаю, лучше перед понимать заранее на какой объем памяти рассчитывать можно.

Добавлено через 10 минут
Pro_grammer, Представите себе, что Вам надо создать N CreateImage...
1. Сколько CreateImage размером(х.у) Вы сможете создать?
2. Что дешевле открыть N CreateImage(х.у) или один CreateImage(N*х.у)?
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
26.04.2021, 23:11
Цитата Сообщение от nigri_lupus Посмотреть сообщение
Создаю холст размерами скажем (10,10) и 0.5 Мб как корова языком слизала.
Смотрите по диспетчеру задач?
Система выделяет память как считает нужным. В ней находится не только картинка созданная функцией CreateImage но и много чего другого.
Цитата Сообщение от nigri_lupus Посмотреть сообщение
1. Сколько CreateImage размером(х.у) Вы сможете создать?
Количество зависит от размера картинки, от наличия доступной памяти, от количества используемых дескрипторов (в операционной системе есть ограничение на их число) и от многого другого.
Если нужно создать много картинок лучше проверять что они были созданы.

Цитата Сообщение от nigri_lupus Посмотреть сообщение
2. Что дешевле открыть N CreateImage(х.у) или один CreateImage(N*х.у)?
Если суммарный размер картинок х,у равен N*х.у то по памяти это почти идентично, но дескрипторов будет меньше.
Если все картинки одновременно не нужны, то можно загружать по необходимости и выгружать ненужные. Тогда выигрыш по памяти будет больше.
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
27.04.2021, 05:09  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Система выделяет память как считает нужным.
Это КАК????
То, что
Цитата Сообщение от locm Посмотреть сообщение
В ней находится не только картинка созданная функцией CreateImage но и много чего другого.
само собой, но...
Вот, например я говорю, что у меня будет целочисленный массив из 100 элементов, значит и памяти на него потребуется выделить соответственно. Тоже или что-то подобное (по идее) должно быть и с CreateImage.
Кстати, когда я экспериментировал в коде было пустое окно(даже без ImageGadget)
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.04.2021, 11:02
Цитата Сообщение от nigri_lupus Посмотреть сообщение
Это КАК????
Я имел в виду память под процесс, а не только для картинки.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
30.04.2021, 09:08
Цитата Сообщение от nigri_lupus Посмотреть сообщение
Создаю холст размерами скажем (10,10) и 0.5 Мб как корова языком слизала. Увеличиваю....Ну скажем до (20,10) - проверяю по диспетчеру раздач - те же самые 0.5 Мб.... Хорошо... уменьшаю до (1,1) и опять 25, ну, а точнее 0.5Мб.
Снова увеличиваю и до определенного момента остаётся всё таже цифра... После увеличения до некоторого "порога" CreateImage начинает кушать уже 1Мб и опять же это число не меняется до определенного порога....
Какую конкретно память вы смотрели? Virtual Size, Private Bytes, Working Set?
Даже если вы выделите несколько гигабайт памяти, то не все они попадут в рабочий набор.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
30.04.2021, 09:13
Вот здесь программа выделяет 1 гигабайт памяти в куче, она отражается в Private Bytes, однако рабочий набор не изменился:
Миниатюры
Как узнать сколько памяти потребляет CreateImage?  
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.04.2021, 12:37
Цитата Сообщение от Замабувараев Посмотреть сообщение
Какую конкретно память вы смотрели? Virtual Size, Private Bytes, Working Set?
Он смотрел параметр "выделенная память" в диспетчере.
Думаю не надо человека сейчас этим грузить, пока он с ума не сошёл.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
30.04.2021, 12:40
Цитата Сообщение от Quiet Snow Посмотреть сообщение
"выделенная память" в диспетчере
Видимо, так диспетчер задач называет Private Bytes.
Я рекомендую использовать что‐нибудь получше: Process Explorer или Process Hacker. Там терминология правильная.
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.04.2021, 12:54
Цитата Сообщение от Замабувараев Посмотреть сообщение
Видимо, так диспетчер задач называет Private Bytes.
Я рекомендую использовать что‐нибудь получше: Process Explorer или Process Hacker. Там терминология правильная.
Да оно всё есть в стандартном, можно включить. Просто зачем?

Всё что заводится ALOCATE-ом там отображается, если исп. функции системы - то может чего и мутит, хз
но меньше памяти, чем надо на картинку так или иначе не должно быть заведено.
Потому что имаджи в PB позволяют рендерить в имаджи, чисто логически система опухла бы считать
зависимости, этого там точно нет. Представь себе 500 имаджей, каждый рендерит в разные.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Берём формат RGB - 3 байта на пиксель, вот и считайте.
4 байта, альфу тоже можно посчитать.
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.04.2021, 13:05
А ну в общем да, можно и 3 байта, там оно по умолчанию идёт, открыл справку, проверил.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
30.04.2021, 13:11
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А ну в общем да, можно и 3 байта, там оно по умолчанию идёт, открыл справку, проверил.
Если цвет 24‐ или 32‐битный, то всегда будет выравнивание по границе 4 байт, поэтому даже на 24‐битный цвет будет тратиться 32‐байта.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.04.2021, 13:22
Цитата Сообщение от Замабувараев Посмотреть сообщение
поэтому даже на 24‐битный цвет будет тратиться 32‐байта.
Где будет тратится, в каком месте?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
30.04.2021, 13:28
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Где будет тратится, в каком месте?
GDI, ОпенГёл и DirectX сохраняет цвет как минимум в виде 32‐бит. Чтобы передать картинку на экран вам необходимо хранить цвет в том же формате, то есть как 32‐бита.

Добавлено через 1 минуту
Цитата Сообщение от Замабувараев Посмотреть сообщение
32‐байта
32 бита конечно же.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.04.2021, 13:40
Цитата Сообщение от Замабувараев Посмотреть сообщение
вам необходимо хранить цвет в том же формате, то есть как 32‐бита.
Где надо хранить, конкретно?
У меня на диске изображение 100x100 24b BMP занимает 30054 байта. Это 100х100х3 + заголовок.
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.04.2021, 13:48
Цитата Сообщение от Замабувараев Посмотреть сообщение
Если цвет 24‐ или 32‐битный, то всегда будет выравнивание по границе 4 байт
Ну это пусть мужики проверят сами. В линуксах там, макосях.
Там ещё такие штуки есть
DrawingBufferPitch()

Добавлено через 2 минуты
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У меня на диске изображение 100x100 24b BMP занимает 30054 байта.
BMP кстати использует выравнивание. Как-то давно публиковал картинку с формулой. Сейчас не найду уже.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.04.2021, 14:04
Цитата Сообщение от Quiet Snow Посмотреть сообщение
BMP кстати использует выравнивание.
Я пишу реальные вещи, как есть. Может он и использует, BMP многогранен и многолик.
Создай реальный 24b BMP размером 100х100 и посмотри, сколько места он занимает на диске и в памяти.
У меня в памяти при его просмотре в IrfanView (там есть кнопочка Информация) занимает 30040 байт, т.е. меньше, чем на диске.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2021, 14:04
Помогаю со студенческими работами здесь

Как узнать сколько оперативной памяти потребляет каждая служба windows
Здравствуйте! У меня стоит семерка. Решил поотключать ненужные службы windows, с целью освобождения оперативной памяти и уменьшения...

Как узнать сколько ОЗУ и частосты процессора потребляет определенный php-скрипт?
Как узнать сколько ОЗУ и частосты процессора потребляет определенный php-скрипт?

Определить, сколько памяти потребляет программа
Сколько места заберет данная программа, если short занимает 2 байта, int 4, указатель 8. Объясните подробно пожалуйста. short a; int...

Сколько оперативной памяти потребляет Windows 10 x64
На ноутбуку MSI GE 70-2oe windows 10, после установки последнего обновления начала потреблять порядка 4 ГБ оперативной памяти Файл с...

Узнать сколько трафика Wi-Fi потребляет телевизор (смартфон, планшет и т.д.)
Какой софтиной можно увидеть потребление телевизором трафика? И вообще все беспроводные устройства. Софтины для пк показывают только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru