Вопрос про оптимизацию

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Вопрос про оптимизацию

Сообщение X-BOND » 09.06.2003 (Пн) 11:27

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

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 09.06.2003 (Пн) 11:53

...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 09.06.2003 (Пн) 12:25

Ту статейку я уже читал и всегда придерживаюсь этих правил и даже больше. Но там идет речь об оптимизации скорости программ.
А со скоростью у меня все ОК.
Меня интересует ВОПРОС ЭКОНОМИИ ОПЕРАТИВНОЙ ПАМЯТИ КОМПЬЮТЕРА для приложений VB

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.06.2003 (Пн) 17:47

1. Не используй Boolean, на самом деле она занимает два байта в памяти (а не один бит).
2. Не используй Byte.
3. Не используй Variant.
4. Не используй Single и Double, если без них можно обойтись.
5. Не используй массивы.
6. Не используй Long, когда можно обойтись Integer.
7. Не используй нестандартные контролы, в большинстве случаев достаточно тех, которые являются стандартными.
8. Не используй PictureBox, если достаточно Image.
9. Старайся по возможности снизить "глубину" вызова процедур.
и 10. Не используй VB :) Пиши на более низкоуровневом языке.
Lasciate ogni speranza, voi ch'entrate.

Morfius
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 25.03.2003 (Вт) 14:27
Откуда: КМВ

Сообщение Morfius » 10.06.2003 (Вт) 11:34

alibek писал(а):1. Не используй Boolean, на самом деле она занимает два байта в памяти (а не один бит).
2. Не используй Byte.
3. Не используй Variant.
4. Не используй Single и Double, если без них можно обойтись.
5. Не используй массивы.
6. Не используй Long, когда можно обойтись Integer.
7. Не используй нестандартные контролы, в большинстве случаев достаточно тех, которые являются стандартными.
8. Не используй PictureBox, если достаточно Image.
9. Старайся по возможности снизить "глубину" вызова процедур.
и 10. Не используй VB :) Пиши на более низкоуровневом языке.

Читая это у меня возник вопрос: А что можно :?: :?: :?:
И нигде раньше не слышал что Boolean занимает 2 байта в памяти...
Вопрос, а почему массивы нельзя использовать, я думаю это самое удобное и быстрое, что есть... :twisted:
Жизнь похожа на сказку, - Чем дальше, тем страшнее

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 10.06.2003 (Вт) 12:18

1. Не используй Boolean, на самом деле она занимает два байта в памяти (а не один бит).

Допустим.

2. Не используй Byte.

Почему? Неужели Long или Integer лучше?

3. Не используй Variant.
4. Не используй Single и Double, если без них можно обойтись.
5. Не используй массивы.
7. Не используй нестандартные контролы, в большинстве случаев достаточно тех, которые являются стандартными.
8. Не используй PictureBox, если достаточно Image.
9. Старайся по возможности снизить "глубину" вызова процедур.
и 10. Не используй VB Пиши на более низкоуровневом языке.

Согласен

6. Не используй Long, когда можно обойтись Integer.

Но, кстати, в той статейке советуют именно LONG.


Еще такой вопрос. Загружаю проект. (через Sub Main) Прога сразу еста 4 метра. После гружу форму. Плюс еще два метра. Выгружаю форму и... 6 метров так и осталось. Как можно освободить память?

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 10.06.2003 (Вт) 12:35

:lol:
Код: Выделить всё
Integer - целые числа - 2 байта -  значения [-2^15 ; 2^15-1]
Long - целые числа - 4 байта - значения [-2^31 ; 2^31-1]
Single - вещественны числа одинарной точности - 4 байта - [-2^128 ; -2^-149] и [2^-149 ; 2^128-1]
Double - вещ числа двойной точности - 8 байт - [-2^-1024 ; 2^1024-1]
Currency - вещ числа (целая часть до 15 цифр, дробная до 4) - 8 байт - [2^63*10^-4 ; (2^63-1)*10^-4]
String - текст - по байту на символ - до 2^16 символов для строк фиксированной длины, до 2^31 символов для динамических строк
Byte - целые чилса - 1 байт - [0 ; 2^8-1]
Boolean - логич знач - 2 байта - [true ; false]
Date - дата и время - 8 байт - [1.01.100 ; 31.12.9999]
Object - объект - 4 байта - ссылка на объект
Variant - любая - 16+ (для каждого символа) байтов - диапозон не определён

http://visualbasic.km.ru/sovet/sovet8.html
http://nokstr.ru/?zametki/13
http://sharig.webzone.ru/global/pages/DataTypes.htm
http://faq.pp.ru/forums/index.php?act=ST&f=5&t=831&s=
http://osp.admin.tomsk.ru/os/2001/05-06/054.htm
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 10.06.2003 (Вт) 12:44

X-BOND писал(а):
6. Не используй Long, когда можно обойтись Integer.

Но, кстати, в той статейке советуют именно LONG.

Long советуют для быстродействия, т.к. при выравнивании по границе слова ЦП неявно преобразует переменные типа Integer в Long на что уходит пара-тройка тактов. Скорость и ресурсоёмкость всегда как весы - одно улучшаешь, другое наоборот. Проблема в том чтобы найти разумный компромис.

X-BOND писал(а):Еще такой вопрос. Загружаю проект. (через Sub Main) Прога сразу еста 4 метра. После гружу форму. Плюс еще два метра. Выгружаю форму и... 6 метров так и осталось. Как можно освободить память?

По-моему, никак. Типа автоматическая зачистка памяти. Типа если кому понадобится, то отдам, а так подержу пока на всякий случай ("такая корова нужна самому").

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 10.06.2003 (Вт) 15:43

X-BOND писал(а):Еще такой вопрос. Загружаю проект. (через Sub Main) Прога сразу еста 4 метра. После гружу форму. Плюс еще два метра. Выгружаю форму и... 6 метров так и осталось. Как можно освободить память?


а Set Form1 = Nothing не пробовал?
или может я чего-то не догоняю...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 12.06.2003 (Чт) 11:07

Set Form = Nothing не помогает
Ставил и в Form_Unload и в таймер.

Зато обнаружил интересный феномен. Если форму не выгружать, а просто свернуть, то раpмер проги сразу снижается до 1.5Mb
Наверно это особенность VB или системы.
Может есть какие нибудь мысли по этому поводу?

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 11:04

X-BOND писал(а):Зато обнаружил интересный феномен. Если форму не выгружать, а просто свернуть, то раpмер проги сразу снижается до 1.5Mb
Наверно это особенность VB или системы.
Может есть какие нибудь мысли по этому поводу?

ну наверное как раз эти 1.5Mb окно и занимает, точнее графический образ окна для отображения на экране... а может винда при сворачивании окна всю относящуюся к нему инвормацию в своп сливает...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 14.09.2005 (Ср) 18:41

Эх дожили, поднимаю тему 2-летней давности... :)

Call SetProcessWorkingSetSize(hProcess, -1, -1)

Код, который может помочь несколько уменьшить занимаемую память.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 115

    TopList