Форум: "Начинающим";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Внизстроковые константы Найти похожие ветки
← →
Gu (2011-09-01 18:58) [0]Приложение использует много строковых констант, которые юзаются во многих его модулях. Вопрос: как будет правильнее объявить их: в начале основного модуля (все другие его юзают) в разделе Consts или в разделе Resourcestring? Есть ли между ними большие отличия и влияет ли это на скорость работы и расход памяти при загрузке приложения и работе?
← →
Ega23 © (2011-09-01 19:28) [1]
> в начале основного модуля
← →
_Юрий (2011-09-01 19:29) [2]
> в разделе Consts или в разделе Resourcestring?
Отличие собственно в том, будут ли они константами или строками в ресурсе.
Отличия между ними разумеется большие.
Ресурсные строки обычно делаются в том случае, когда требуется локализация приложения.
← →
Gu (2011-09-01 20:06) [3]Т.е. я так понимаю, что в слчае с Resourcestring прога при использовании их в процедурах будет каждый раз лазить в свои ресурсы (т.е. выполнять файловую операцию), а в случае с константами - все операции производятся в памяти?
← →
Anatoly Podgoretsky © (2011-09-01 20:07) [4]> Gu (01.09.2011 18:58:00) [0]
Resourcestring правильнее и оптимальнее, об этом заботится система.
← →
Rouse_ © (2011-09-01 20:07) [5]В обоих случаях операция производится в памяти
← →
Anatoly Podgoretsky © (2011-09-01 20:20) [6]> Rouse_ (01.09.2011 20:07:05) [5]
Только в первом в памяти все, что сумеет подгрузить, а с ресурсами по
потребностями
← →
Rouse_ © (2011-09-01 20:50) [7]
> Anatoly Podgoretsky © (01.09.11 20:20) [6]
> Только в первом в памяти все, что сумеет подгрузить, а с
> ресурсами по потребностями
Та не, секция ресурсов грузится в память целиком и работа непосредственно с ресурсом ведется по оффсету, те-же яйцы, только в профиль...
← →
Anatoly Podgoretsky © (2011-09-01 20:52) [8]> Rouse_ (01.09.2011 20:50:07) [7]
Грузится по 16 строк.
← →
Rouse_ © (2011-09-01 21:00) [9]Целиком грузится :) Если-б образ исполняемого файла не грузился в память целиком вместе со всеми секциями, включая секцию ресурсов, то было-бы не возможно такое понятие, как дамп образа.
← →
Rouse_ © (2011-09-01 21:01) [10]зы: скомпиляй вот эту демку, она наглядно все кажет, что где и каким образом: http://rouse.drkb.ru/winapi.php#pmm
← →
Игорь Шевченко © (2011-09-01 22:48) [11]Rouse_ © (01.09.11 21:00) [9]
100-мегабайтный инсталлятор тоже целиком в память грузится ?
вот у меня есть файл:
Turbo Dump Version 6.3.0.0 Copyright (c) 1988-2009 Embarcadero Technologies, Inc.
Display of File windowsxp.x86.fre.rtm.symbols.exe
Object table:
# Name VirtSize RVA PhysSize Phys off Flags
-- -------- -------- -------- -------- -------- --------
01 .text 000085F2 00001000 00008600 00000400 60000020 [CER]
02 .data 00001BE4 0000A000 00000400 00008A00 C0000040 [IRW]
03 .rsrc 095D4000 0000C000 095D3E00 00008E00 40000040 [IR]
Все секции будут при запуске сразу на память отображены ?
← →
Rouse_ © (2011-09-02 01:26) [12]Инсталятор? А коим образом он к исполняемому файлу то относится? Загрузочный стаб и секция передаваемая MSI службе
← →
Игорь Шевченко © (2011-09-02 09:49) [13]
> А коим образом он к исполняемому файлу то относится?
имеет PE-формат
← →
Rouse_ © (2011-09-02 10:38) [14]
> Игорь Шевченко © (01.09.11 22:48) [11]
Кстати именно этот инсталятор таки да, грузится целиком...
← →
Игорь Шевченко © (2011-09-02 10:38) [15]
> Кстати именно этот инсталятор таки да, грузится целиком.
> ..
prove it
← →
Игорь Шевченко © (2011-09-02 10:40) [16]Для начала неплохо бы договориться о терминологии: что значит "грузится" ?
← →
Rouse_ © (2011-09-02 10:41) [17]
> Игорь Шевченко © (02.09.11 10:38) [15]
> prove it
http://rouse.drkb.ru/tmp/m.png
← →
han_malign (2011-09-02 10:53) [18]
> prove it
http://support.microsoft.com/default.aspx?scid=kb;en-us;193678
← →
Игорь Шевченко © (2011-09-02 12:56) [19]Это все хорошо, но где написано, что "грузятся" ? Хоть на одной картинке ?
Лежат себе на диске преспокойно, как и неиспользуемые страницы кодового сегмента.
← →
Rouse_ © (2011-09-02 13:09) [20]
> Игорь Шевченко © (02.09.11 12:56) [19]
>
> Это все хорошо, но где написано, что "грузятся" ? Хоть на
> одной картинке ?
> Лежат себе на диске преспокойно, как и неиспользуемые страницы
> кодового сегмента.
Ну тут дело в том, что если снять дамп процесса и при этом запустить FileMon, то отчетливо будет видно, что зачитки данных с образа файла на диске не происходит.
← →
Игорь Шевченко © (2011-09-02 13:15) [21]Rouse_ © (02.09.11 13:09) [20]
А если запустить FileMon до запуска процесса ? Он покажет чтение ВСЕГО исполняемого файла ?
← →
Rouse_ © (2011-09-02 13:17) [22]Да, файл будет зачитан целиком
← →
Slym © (2011-09-02 13:26) [23]Rouse_ © (02.09.11 13:17) [22]
антивирь отключи чтоб не сканил предварительно
← →
Rouse_ © (2011-09-02 13:32) [24]Я на виртуалке тестировал, у меня файл символов там лежит с сайсом, там антивиря нет...
← →
Игорь Шевченко © (2011-09-02 13:32) [25]ради интереса запустил FileMon и указанный файл. Чтения всех 146 мегабайт не увидел. И не ожидал увидеть, так как в книжках, начиная с Рихтера, написано, что исполняемые файлы читаются по мере надобности, а не целиком при запуске.
← →
Rouse_ © (2011-09-02 13:33) [26]А чтение при дампе увидел?
← →
Rouse_ © (2011-09-02 13:34) [27]Кстати, выгрузку всей ресурсной секции в временную папку тоже не увидел? Интересно тогда, как это она так без полного чтения то?
← →
Игорь Шевченко © (2011-09-02 13:37) [28]
> А чтение при дампе увидел?
что такое дамп ?
← →
Rouse_ © (2011-09-02 13:40) [29]У максвела этот процесс описан вот так: http://www.netlib.narod.ru/library/book0010/ch08_07.htm
← →
Игорь Шевченко © (2011-09-02 13:48) [30]
> У максвела этот процесс описан вот так
"Наиболее распространенным двоичным форматом Linux является ELF, поэтому рассмотрим, как двоичный обработчик ELF выполняет дамп памяти.
"
Как прикажешь тебя понимать ?
Я тебе могу сказать больше - если ты запустишь FileMon и выполнишь копирование файла, операции чтения всего этого файла тоже будут показаны. Ты обращаешься ко всем страницам памяти в адресном пространстве процесса, вызывая их отображение на физическую память.
← →
Rouse_ © (2011-09-02 13:59) [31]
> Как прикажешь тебя понимать ?
Ссылка была дана как описание того, что есть дамп памяти.
> Ты обращаешься ко всем страницам памяти в адресном пространстве
> процесса, вызывая их отображение на физическую память.
Откуда они отображаются? Где хранятся не отображенные данные?
Я же тебе еще раз говорю, ты сказал что не увидел зачитки всего файла.
Ладно допустим. Но проблемка в том что при старте инсталятор символов выгружает во временную папку хранящиеся в секции ресурсов файлы eula.txt simbols.cab simbols.cat и т.д.
Вопрос, откуда он их взял, чтения файла то не было по твоему утверждению? Или может быть все-же идущая перед выгрузкой запись запись LoadImage с указанием размера нам намекает?
← →
Игорь Шевченко © (2011-09-02 15:06) [32]
> Откуда они отображаются? Где хранятся не отображенные данные?
на диске.
> Вопрос, откуда он их взял,
Вот в момент обращения к этим данным и было чтение. Через диспетчер памяти.
← →
Rouse_ © (2011-09-02 15:11) [33]
> в момент обращения к этим данным и было чтение
А FileMon его не показал... понятно.
← →
Юрий Зотов © (2011-09-02 15:20) [34]Если я правильно понял Рихтера, то ни один файл (включая исполнимые) ПОЛНОСТЬЮ в ОЗУ никогда не грузится. Он отображается на АП процесса, а в ОЗУ грузится постранично, по мере надобности (конечно, с учетом еще и кэша страниц). То есть, сам дисковый файл как бы используется в качестве некоего свопа.
← →
Юрий Зотов © (2011-09-02 15:22) [35]Разве что весь файл умещается в одной странице... тогда загрузится полностью, конечно.
:o)
← →
Rouse_ © (2011-09-02 15:39) [36]Да это все понятно, просто я то речь веду про виртуальную память, а не про физическую...
← →
Inovet © (2011-09-02 15:41) [37]> [34] Юрий Зотов © (02.09.11 15:20)
> файл как бы используется в качестве некоего свопа
Разве механизм не один и тот же что и в свопе. Просто файл и так уже на диске находится.
← →
Inovet © (2011-09-02 15:44) [38]> [36] Rouse_ © (02.09.11 15:39)
> я то речь веду про виртуальную память
Так на то и виртуальная, чтобы без надобности не читать в ОЗУ. Зачем, если данные или код могут не разу не понадобиться
← →
Игорь Шевченко © (2011-09-02 16:30) [39]FileMon показывает чтение в физическую память :)
← →
Anatoly Podgoretsky © (2011-09-02 16:50) [40]> Юрий Зотов (02.09.2011 15:20:34) [34]
resourcestring именно такой, не гонится в своп, он сам часть свопа
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.004 c