Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Величина процесса в памяти...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Bad Lamer



Зарегистрирован: 23.09.2004
Сообщения: 61

СообщениеДобавлено: Пн Июн 27 2005 18:53    Заголовок сообщения: Величина процесса в памяти... Ответить с цитатой

Может кто-нибудь замечал такое, поделитесь знаниями:
написАл я программу под Windows, использовал только функции WinAPI32 (никаких компонентов и т.д.), реализовал на ассемблере и на Delphi. Исполняемый файл на ассемблере получился 2.5 КБ (асм. хатчевский masm32, на TASM-e 4КБ), на Delphi - 15КБ. Зато в списке процессов использование памяти программы на асме - 1460 КБ, а на Delphi - 680 КБ. Почему так?
В ассемблерной программе подключал kernel32.dll и user32.dll
в делфийской - модуль windows.dcu
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bad Lamer



Зарегистрирован: 23.09.2004
Сообщения: 61

СообщениеДобавлено: Вт Июн 28 2005 00:06    Заголовок сообщения: Ответить с цитатой

может вопрос не корректно сформулировал...
вобщем интересно, почему величина процесса проги на асме больше величины процесса проги на делфи?..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mad_alexx



Зарегистрирован: 14.01.2005
Сообщения: 154
Откуда: Иркутск

СообщениеДобавлено: Вт Июн 28 2005 04:50    Заголовок сообщения: Ответить с цитатой

Может быть Delphi оптимизирует код, а ассемблер оставляет как есть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Вт Июн 28 2005 12:09    Заголовок сообщения: память.. Ответить с цитатой

Думаю, если в Вашей программе используеться динамически выделяемая память, либо глубокие рекурсии - вполне может быть. Так трудно сказать.

Попробуйте выкидывать функционал, до тех пор - пока вещи не подпадут под "нормальную" логику сравнения (азм меньше делфи). Тогда будет понятно где собака порылась.

с уважением
(круглый)
_________________
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bad Lamer



Зарегистрирован: 23.09.2004
Сообщения: 61

СообщениеДобавлено: Вт Июн 28 2005 21:44    Заголовок сообщения: Ответить с цитатой

Вот код на асме:

.386
.model flat
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib
extrn __imp__GetMessageA@16:dword
extrn __imp__TranslateMessage@4:dword
extrn __imp__DispatchMessageA@4:dword
extrn __imp__ExitProcess@4:dword
.data?
hmod dd ?
MSG struc
hwnd dd ?
message dd ?
lParam dd ?
wParam dd ?
time dd ?
pt dd ?
MSG ends
msg MSG < ?, ?, ?, ?, ?, ? >
.code
_start:
mov edi, offset msg
msg_loop:
push 0
push 0
push 0
push edi
call __imp__GetMessageA@16
test eax, eax
jz exit_msg_loop
push edi
call __imp__TranslateMessage@4
push edi
call __imp__DispatchMessageA@4
jmp short msg_loop
exit_msg_loop:
push 0
call __imp__ExitProcess@4
end _start


Вот на делфи:

program prog1;
uses
Windows;
var
Msg:TMsg;
begin
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.


Это, конечно не полный код моей программы, но этого вполне хватает чтобы посмотреть разницу... все остальное писАл идентично, используя только функции API.

Если нужно: компилил так:
masm32: ml /c /coff /Cp; link /subsystem:windows

делфийскую компилил в Delphi 7
Confused Confused Confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...