Приветствую Вас Гость | RSS

Reversing and Code

Пятница, 29.03.2024, 15:34
Главная » Программирование в Delphi
На днях, переписывая один крипто компонент для Delphi, столкнулся со странной оптимизацией кода и алгоритма. В одном месте я увидел манипуляции с массивами, которые, если упростить, выглядели следующим образом:

a := a xor b;
b := b xor a;
a := a xor b;

Если при манипуляции с xor переменная встречается несколько раз, значит алгоритм подразумевает получение переменной в ее начальном состоянии. Для чего тут это нужно. Зная логику работы xor можно составить следующие выражения:

b := b xor (a xor b); что дает нам a
a := (a xor b) xor a; что дает нам b

Т.е. это всего лишь обмен местами двух переменных без использования промежуто ... Читать дальше »
Категория: Программирование в Delphi | Просмотров: 2539 | Добавил: PE_Kill | Дата: 13.09.2011 | Комментарии (3)

Просматривая код других Delphi программистов, я постоянно вижу одни и те же ошибки. Самое ужасное, что я вижу такое и в очень дорогостоящих проектах, где, казалось бы должны работать профи. Давайте я немного расскажу о них, чтобы в последствии ВЫ писали код правильно.

Начнем с того, что по умолчанию все формы в Delphi создаются сразу же при загрузке программы и болтаются в памяти до ее закрытия. Если форм мало (2-3), то это не страшно, и для небольших утилит я даже не заостряю на этом внимание. Но если проект начинает обрастать большим количеством форм, это серьезно отражается на производительности. Простой пример. Мне попалась программа, в которой использовалось ~150 форм. Все они создавались автоматически. У многих были процедуры инициализации и финализации. Загрузка exe до момента показа главной формы занимала почти минуту (!!!). При этом в постоянной работе использовались только 3 (!) формы. Убрав инициализацию форм при запуске я выиграл во времени эту самую минуту, которая ... Читать дальше »
Категория: Программирование в Delphi | Просмотров: 14387 | Добавил: PE_Kill | Дата: 06.08.2011 | Комментарии (2)