Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Уничтожение переменных Добавлено: 22.11.03 00:16  

Автор вопроса:  cresta
При выгрузке форм рекомендуется уничтожать созданные в процессе работы объекты и устанавливать
все переменные в Nothing. С глобальными переменными понятно, а вот переменные объявленные на уровне процедур требуют установки в Nothing или они автоматически уничтожаются при выходе из процедуры.Просветите кто-нить,плиз

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #1
Добавлено: 22.11.03 03:10

хм... ну когда ты объекту присвоеваешь ссылку Nothing то он уничтожается... благадоря системе сбора мусора +) уничтожает объекты на которых нет ссылки .. а вот переменные которые ты объявляешь на уровне процедуры... то что то не пойму.... что ты именно хочешь ... при каждом входе в процедуру они обнуляются..... а удалить их ты не сможешь так как это при компиляции под них заводится место ... то бишь они не динамически созданы.... да кстати опытным путём было замечено что некоторые переменные в твоих процедурах вообще не используются .. то бишь компилятор компилирует оптимально ...!!! настолько что сам знает что ненадо например использовать твою переменную тут а можно обойтись ....... например

вот такой код

Public Function test1(ByVal test As Long) As Long

Dim a As Long

Dim b As Long

a = test

b = test

a = a + b

test1 = a

End Function

Компилятор преобразовал вот в такой

mov eax, dword ptr [esp+04] 'берём параметр переданный в функции из стека

add eax, eax 'складываем его с ним же.... (то что функция возвращает находится всегда в регистре eax)

ret 4 ' очищаем стек и возращаемся в точку вызова

как видешь он сам догадался что нет смысла присваивать одной переменой значение .. потом другой ... потом складывать и тд итп.... а сделал всё оптимально .!!

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 22.11.03 14:25

Получается, о переменных на уровне процедуры можно не думать.Ясно. Просто заметил что после создания объектов и объявления переменных все работает медленнее(после выхода из программы), уничтожил объекты и глобальные -система стала пошустрее, думал, может все переменные покосить.

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

Ответить

Номер ответа: 3
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #3
Добавлено: 23.11.03 01:06

переменные ты не можешь уничтожить +)... а вот обнулять их надо ... хотя система ВБ сама их обнулит .. ну прсото мол для красоты... +)

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 23.11.03 01:11
Или для очистки совести

Ответить

Номер ответа: 5
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #5
Добавлено: 23.11.03 01:12

угу....

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 29.11.03 18:04

2 Fallout
Ты каким отладчиком VB просматриваешь?

Посоветуй и мне что нибудь. Только учти - я с ними никогда не работал.

Глянул этот код. Хм. Какой то шибко умный компилятор. Как это он сразу узнал что а=б? Даже никаких операций сравнения не производил.

 

Ответить

Номер ответа: 7
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #7
Добавлено: 30.11.03 01:53

я не отладчиком ДизАссемблером а именно WDASM32 (с ним у тебя проблем не бдет там и отладчик и дизассемблер.... напиши в любом поисковике... найдёшь .... писать лучше так : w32dasm)

хм... да просто зачем ему это сравнивать если ..... указатель на параметр который мы передали один и тот же.... ему всё ровно что ты передашь функциии... если указатель на это что то .... один и тот же то и значение будут равными..... кстати мне очень понравилось ..... то что ВБ "думает" и анализирует код стараясь сделать его более быстрым......

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам