Конференция "Основная" » Отложенное освобождение объектов
 
  • ggg (20.06.08 06:03) [20]
    >> [1]
    system.pas

    procedure TObject.Free;
    begin
     if Self <> nil then
       Destroy;
    end;


    Вы считаете это глупость?

    >> [3]
    FreeInstance вызывается после Destroy, но если проверку добавить в оба метода, то да. Спасибо, помогло :)

    >> [6]
    Да, иметь возможность вызвать метод Free в любой момент не заботясь о последствиях весьма удобно.
    Заменить это уменьшением UseCount.. не безопасно. Просто, возможно несколько условий на различных стадиях работы движка, когда объект необходимо удалить. Тогда при выполнении нескольких условий счетчик может стать равным 0 до того, как объект действительно освободится.

    >>[14]
    Где-то встречал, будто опыты показали, что if...else работает быстрее, чем Exit. Не ручаюсь за достоверность, но большой разницы нет.

    >>[16]
    Насколько мне известно, эти begin..end дадут несколько другой код после компиляции, который будет выполнятся дольше. Хотя, возможно, это предрассудки моего препода по паскалю :)
  • Loginov Dmitry © (20.06.08 07:50) [21]
    > Насколько мне известно, эти begin..end дадут несколько другой
    > код после компиляции, который будет выполнятся дольше


    Разговор про наглядность, а не про скорость. Скорость тут дело десятое.


    > Хотя, возможно, это предрассудки моего препода по паскалю
    > :)


    +1 :)
  • Игорь Шевченко © (20.06.08 09:44) [22]

    > ты во внутрь самого фри не попадешь при таком раскладе


    я попаду в любой невиртуальный метод
  • ggg (20.06.08 20:06) [23]
    Ну как бы всё-равно проблемы остались -- одну и ту же проверку приходится производить дважды: в Destroy и в FreeInstance. Если есть еще предложения, буду рад выслушать.
  • Eraser © (20.06.08 20:54) [24]
    > [20] ggg   (20.06.08 06:03)


    > Где-то встречал, будто опыты показали, что if...else работает
    > быстрее, чем Exit. Не ручаюсь за достоверность, но большой
    > разницы нет.

    ох уж эта привычка применять тонкую оптимизацию где попало, а потом разгребаешь
    if then
     if then
      if then

    и еще тележку else if
 
Конференция "Основная" » Отложенное освобождение объектов
Есть новые Нет новых   [134491   +12][b:0][p:0]