Конференция "Прочее" » По поводу DisposedOf
 
  • Кто б сомневался © (06.03.17 00:45) [0]
    Нашел тут очень интересную статью от Gunsmoker, которая пролетела мимо меня, но из которой я много чего узнал нового .

    http://www.gunsmoker.ru/2013/05/modern-delphi.html

    К примеру то, что на ARM DisposeOf хотя и вызывает деструктор, но не освобождает память выделенную под объект (зомби объект).

    А также то что использовать конструкции try finally для уничтожения объектов фактически уже и не надо (на ARM).

    А также то что Assigned вместе с FreeAndNil тоже потеряли смысл - так как объект все равно будет существовать, даже если он в состоянии "зомби".
  • Kerk © (06.03.17 01:42) [1]
    Этим дурацким ARC поломали совместимость. Потом опомнились и напридумывали костылей вроде DisposeOf. В общем, богомерзко все это :(
  • Кто б сомневался © (06.03.17 02:08) [2]
    Kerk ©   (06.03.17 01:42) [1]

    C другой стороны таким образом уменьшили количество Access Violation - т.к. объект то не уничтожается, даже с DisposeOf.
    Т.е. при обращении к полям такого класса после DisposOf, после деструктора, не вылезет AV. Хотя может это и хуже, т.к. программист не увидит AV.

    А статью почитайте, там не только про это.
    К примеру там еще интересное наблюдение: TstringList vs TDictionary.

    Поиск в отсортированном TstringList (бинарный поиск) в несколько раз медленнее чем поиск TDictionary, который последовательно перебирает, но использует хэш.
  • sniknik © (06.03.17 10:16) [3]
    > Хотя может это и хуже, т.к. программист не увидит AV.
    однозначно хуже. руки бы им по отшибать.
  • DVM © (06.03.17 10:17) [4]

    > TDictionary, который последовательно перебирает

    С чего он вдруг последовательно перебирает?
    Последовательный перебор в хэш таблице будет только при наличии коллизий и то, только для тех значений, которые создают коллизии и то среди небольшого числа элементов таблицы.
  • Dimka Maslov © (06.03.17 10:21) [5]

    > программист не увидит AV


    AV был изначально придуман программистами совсем не для того, чтобы впоследствии придумывать способы помочь ламерам избежать его. AV - это благо, позволяющее получить предупреждение о том, что программа работает некорректно до того, как её некорретная работа привела к необратимым последствиям
  • Игорь Шевченко © (06.03.17 10:53) [6]
    Хорошо, что нам ARC не грозит. Я не верю в приложения для мобильных устройств, написанные на Delphi, а под Win32/Win64 ARC пока не используется.

    Впрочем, в языках с встроенным управлением памятью всех этих конструкций нет с самого начала и никому это не мешает.


    > Поиск в отсортированном TstringList (бинарный поиск) в несколько
    > раз медленнее чем поиск TDictionary, который последовательно
    > перебирает, но использует хэш.


    Это я даже не комментирую, потому что неверно с первого до последнего слова.
  • Кто б сомневался © (06.03.17 20:04) [7]

    > Игорь Шевченко ©   (06.03.17 10:53) [6]
    > Я не верю в приложения для мобильных устройств, написанные
    > на Delphi,


    Старовер чтоль?
    А почему? Ведь они уже работают, и вполне хорошо, за исключением некоторых специфических, типа online захвата видео c камеры с 25 fps.
    Плюс Delphi в том что можно сделать одним кодом и для iOS и для Android, где еще такое найдешь, не Xamarin aka Mono же использовать.


    > DVM ©   (06.03.17 10:17) [4]
    >
    > > TDictionary, который последовательно перебирает
    >
    > С чего он вдруг последовательно перебирает?


    Ну я когда трассировал его, он перебирал последовательно.
    А как он перебирает, сортирует что-ли? Там нету сортировки ведь.
  • Кто б сомневался © (06.03.17 20:46) [8]

    > Игорь Шевченко ©   (06.03.17 10:53) [6]
    > Хорошо, что нам ARC не грозит.

    Нда, между прочим Linux компилятор будет также с ARC.
    http://blog.marcocantu.com/blog/2017-february-delphi-linux-compiler.html
  • Sha © (06.03.17 21:05) [9]
    > Кто б сомневался ©   (06.03.17 20:04) [7]

    >> DVM ©   (06.03.17 10:17) [4]
    >>> TDictionary, который последовательно перебирает
    >> С чего он вдруг последовательно перебирает?

    > Ну я когда трассировал его, он перебирал последовательно.
    > А как он перебирает, сортирует что-ли? Там нету сортировки ведь.

    В стандартной реализации с линейным опробованием он перебирает элементы,
    попавшие в один кластер (группу последовательных занятых ячеек).
    Есть улучшенный вариант реализации с упорядоченным хранением,
    когда перебирается только часть элементов кластера с "похожими" хешами.

    Пример реализации и немного теории: http://guildalfa.ru/alsha/node/32
  • Игорь Шевченко © (06.03.17 23:16) [10]
    Кто б сомневался ©   (06.03.17 20:46) [8]

    Мне слабо верится во взлет Delphi под Linux и вообще, под что-то иное, кроме  Win32/64.

    Под Win32 успех Delphi был (был!), потому что они попали в эту нишу давно, и первые версии отличались не таким числом багов, а все другие ниши к текущему моменту уже заняты сложившейся культурой, куда Delphi с багом на баге продираться будет не слишком легко.
    Все это мое приватное, не претендующее на истину, мнение, разумеется
  • Дмитрий Белькевич © (07.03.17 00:29) [11]
    Я вот, вполне успешно, портировал довольно толстый проект на лазаря + линукс, не думаю, что делфи будет хуже лазаруса.
  • Германн © (07.03.17 02:58) [12]

    > Игорь Шевченко ©   (06.03.17 10:53) [6]
    >
    > Хорошо, что нам ARC не грозит. Я не верю в приложения для
    > мобильных устройств, написанные на Delphi

    Не читал, не знаю и потому не верю?
  • Игорь Шевченко © (07.03.17 10:33) [13]
    Дмитрий Белькевич ©   (07.03.17 00:29) [11]

    Будет хуже, потому что за него денег просят, в отличие от Лазаруса.
  • Дмитрий Белькевич © (07.03.17 16:07) [14]
    ну что же, посмотрим, что они там выкатили.
 
Конференция "Прочее" » По поводу DisposedOf
Есть новые Нет новых   [134431   +10][b:0][p:0.001]