Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Память 
:(
    Опции темы
Dexter
Дата 14.11.2002, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: 1
Всего: 4



У меня тут такой вопрос возник. А много я буду экономить памяти, если заменять integer на word или ваще на byte ну например:


var
   I: integer   // Меняем на byte
begin
   for i:=1 to 10 do
        Form1.caption:=inttostr(i);
   end;




--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Vex
Дата 14.11.2002, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Смотря сколько будет переменных, если пару штук, то это мало что даст, а если, к примеру, масив 1000*1000 то экономия будет.


--------------------
Слава Україні.
PM   Вверх
Chingachguk
Дата 14.11.2002, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Так лучше не делать. И вот почему(VC6++):

Цитата

1:    #include "stdio.h"
2:    #include "io.h"
3:    #include "sys/types.h"
4:    #include "sys/stat.h"
5:    #include "fcntl.h"
6:    #include "string.h"
7:    #include <stdlib.h>
8:
9:    typedef unsigned char       BYTE;
10:
11:   void main(void)
12:   {
00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,48h
00401016   push        ebx
00401017   push        esi
00401018   push        edi
00401019   lea         edi,[ebp-48h]
0040101C   mov         ecx,12h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr [edi]
13:       int Ineger_As_Index;
14:       BYTE byte_As_Index;
15:
16:
17:       for (Ineger_As_Index=0;Ineger_As_Index<10;Ineger_As_Index++);
00401028   mov         dword ptr [ebp-4],0
0040102F   jmp         main+2Ah (0040103a)
00401031   mov         eax,dword ptr [ebp-4]
00401034   add         eax,1
00401037   mov         dword ptr [ebp-4],eax
0040103A   cmp         dword ptr [ebp-4],0Ah
0040103E   jge         main+32h (00401042)
00401040   jmp         main+21h (00401031)
18:       for (byte_As_Index=0;byte_As_Index<10;byte_As_Index++);
00401042   mov         byte ptr [ebp-8],0
00401046   jmp         main+41h (00401051)
00401048   mov         cl,byte ptr [ebp-8]
0040104B   add         cl,1
0040104E   mov         byte ptr [ebp-8],cl
00401051   mov         edx,dword ptr [ebp-8]
00401054   and         edx,0FFh
0040105A   cmp         edx,0Ah
0040105D   jge         main+51h (00401061)
0040105F   jmp         main+38h (00401048)
19:
20:       printf("start ! \n");


Обрати внимание на "ужирнение" кода в случае использования BYTE вместо integer.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Chingachguk
Дата 14.11.2002, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Разумеется, если речь идет о ИНДЕКСЕ.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Vit
Дата 14.11.2002, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Экономия всегда будет, но если не идёт речь о массивах то экономия будет крайне незначительна, кроме того, по-моему (я не уверен - пусть меня поправят если я не прав) в зависимости от опций компилляции компилятор может выравнивать размеры структур, т.е. byte будет выравниваться до 4х байт в памяти для ускорения работы


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 14.11.2002, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Chingachguk @ 13.11.2002, 08:53)
Обрати внимание на "ужирнение" кода в случае использования BYTE вместо integer.

Ха! Вот это новость! Слушай, а в каких ещё случаях это не целесообразно?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 14.11.2002, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Так иея в том, что все переменные компилятор старается выравнивать по 4 байтам. Можно ему в принципе это дело запретить, но тогда работать будет медленнее. Тут уж надо выбирать - или экономить на памяти, или на скорости.
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 14.11.2002, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Кстати, сам MS компиляет свои программы для оптимизации памяти - тогда меньше операция подкачки и выигрышь по скорости. Но это тогда, когда памяти надо мно-о-о-о-о-го.
PM MAIL WWW ICQ   Вверх
Song
Дата 14.11.2002, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Цитата(AntonSaburov @ 13.11.2002, 18:13)
Кстати, сам MS компиляет свои программы для оптимизации памяти - тогда меньше операция подкачки и выигрышь по скорости. Но это тогда, когда памяти надо мно-о-о-о-о-го.

Когда памяти мно-о-о-о-о-го, файл подкачки не нужен..


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Chingachguk
Дата 14.11.2002, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

Vit Дата сообщения: 13.11.2002,17:56
Цитата (Chingachguk @ 13.11.2002,08:53)
Обрати внимание на "ужирнение" кода в случае использования BYTE вместо integer.

Ха! Вот это новость! Слушай, а в каких ещё случаях это не целесообразно?


Например, при передаче параметров в функцию:

procedure MyFunction(b1,b2,b3...: Byte или Word);

Если для этого нет особой нужды. Никакой экономии кода тут не происходит - скорее, наоборот.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.