Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 2

Распределение памяти TstringList

Я создаю объект TStringList и добавляю 10,000 десятибайтовых строк по 1000 строк за раз, после чего, с помощью функции GetHeapStatus, получаю информацию о куче. Ниже представляю вам результаты:
 число   TotalAddrSpace   TotalAllocated
     0        1,048,576           11,268
 1,000        1,048,576           40,848
 2,000        2,097,152           69,344
 3,000        3,145,728           97,888
 4,000        4,194,304          126,296
 5,000        6,291,456          154,868
 6,000        9,437,184          183,268
 7,000       12,582,912          211,828
 8,000       14,680,064          240,248
 9,000       18,874,368          268,800
10,000       23,068,672          297,208
Я гляжу что Delphi 2.0 для моих данных размером 300Кб выделила памяти аж 23Мб! Ну и кому это понравится? У меня есть программа, заполняющая TStringGrid, и она работает вдвое медленне чем в версии Delphi 1.0! Похоже, что вся эта заторможенность вызвана чрезмерным распределением памяти.

- Mark Ford

Я уже упоминал об этом. Проблема заключается в том, что каждый раз списку строк необходимо сбрасывать свое состояние (через каждые шестнадцать добавленных строк), список строк копируется из существующей области в новую, но старая область при этом освобождается некорректно. Я уже послал соответствующий рапорт в Borland.

-Steve Schafer [000916]