![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Traum |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.1.2004 Репутация: нет Всего: нет |
Здравствуйте!
Я пользуюсь средой Turbo Delphi. В исходниках обнаружил папку Decision Cube. Посмотрел модуль Mxarrays.pas. Меня удивил следующий код
В методе Clear происходит очистка памяти с использованием метода SetCapacity(0). Далее в цикле производится копирование массива методом Add, который подразумевает периодическое перераспределение памяти. Почему программисты выбрали такой путь, вместо того чтобы организовать это так:
по-мойму такой вариант будет быстрее и не требует лишних операций по перераспределению памяти. Пожалуйста, прокомментируйте ситуацию |
||||
|
|||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 7 Всего: 50 |
Конечно будет быстрее, и если идти дальше оптимизировать, надо убирать цикл, а данные копировать CopyMemory().
Файлик Mxarrays вообще прекрасен, его писали >10 лет назад. Там сразу в инициализации ошибка, приводщая к Project Project1.exe raised exception class ERangeError with message 'Range check error', авторы догадались записывать доступное кол-во памяти в Integer - это максимум 2ГБайта, а если памяти больше, то уходит минус. Чтобы этим кодом пользоваться его сначала надо руками править, или брать что-то другое. |
|||
|
||||
| Traum |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.1.2004 Репутация: нет Всего: нет |
Спасибо!
Да намерение в этом файле кажется прекрасным, но реализация такая, словно его писали не самые опытные программисты из Borland |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |