Выделение памяти ухудшает производительность? - PullRequest
0 голосов
/ 03 ноября 2011

Это основной вопрос для всех языков программирования, но я хорошо знаком с VBA. Так что я использую код VBA. У меня есть некоторые сомнения по поводу освобождения памяти. Производительность ухудшается, когда мы стираем или меняем выделенное содержимое? что-то вроде

Метод I , где мы освобождаем выделенную память

sub my_function()
     Dim a() as string
     redim a(1 to 15)
     'some for loop  goes here aroung 50 iterations
     erase a ' Deallocate the array
     ' some piece of code goes here may be 40 lines
end sub

Метод II , где мы не освобождаем память

sub my_function()
     Dim a() as string
     redim a(1 to 15)
     'some for loop  goes here aroung 50 iterations
     'some piece of code goes here may be 40 lines
end sub

Метод III где мы выделяем память на последнем уровне

sub my_function()
     Dim a() as string
     redim a(1 to 15)
     'some for loop  goes here aroung 50 iterations
     'some piece of code goes here may be 40 lines
     erase a 'deallocate the memory
end sub

Вопрос

Метод I - это стереть а, пожирает ли он какие-то огромные циклы? или больше байтов оперативной памяти? или я должен ждать конца подпрограммы, или я должен использовать оператор стирания

Метод II В подпрограмме нет оператора стирания, функция убивает массив в конце подпрограммы, но мне не нужен массив до конца функции, так что это достаточно быстро или оптимизировано

Метод III На первых же часах люди говорят, что глупо выделять в конце подпрограммы, так как сама убивает в конце, Но я очень хочу знать Спасибо

1 Ответ

3 голосов
/ 03 ноября 2011

Ответ будет в некоторой степени зависеть от используемого языка и объема используемой памяти.Для VBA в 99,99% всех случаев, которые я могу себе представить, выигрыш в производительности от освобождения памяти массива отсутствует, и, возможно, он несколько медленнее.В VBA есть редкие случаи, когда стоит явно уничтожить объекты.

Для языков, таких как C / C ++, которые не обрабатывают автоматическое освобождение памяти, важно явно программировать освобождение памяти, чтобы ваш код не содержалутечка памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...