• MM_ASH (13.05.08 09:39) [0]
    Привет! Я новичок в КОЛ, хотел бы выяснить такой вопрос, в документации об этом ничего не нашел..
    Вот, скажем, потоки не наследуются от абстрактного класса потока, а используют указатели на методы разных реализаций потоков (файловые строковые), которые забиваются в объект на стадии вызова конструктора. Это все работает в одном классе PStream, то же самое и с PControl. Объясните пожалуйста чем вызван такой подход, мне кажеться что это несколько медленнее (при вызове указателя на функцию), чем если бы это было сделано традиционное наследование с перегрузкой. Единственный полезный эффект как я понял это уменьшение VMT, но это наверное стольо микроскопичный выигрышь что не понятно ПОЧЕМУ же так сделал автор :-)
  • D[u]fa (13.05.08 09:55) [1]
    медленне вызвать метод по указателю? %) не знал
  • D[u]fa (13.05.08 09:56) [2]
    ну а сделали все чтоб уменьшить размер.. читай книгу про КОЛ
  • MM_ASH (13.05.08 11:07) [3]
    2D[u]fa
    Мне здается что медленнее.. ты конечно же смотрел асм того что получается на выходе для вызова указателя на метод и для виртуального метода?
    Книжку я читал.. но на много ли это уменьшает размер, в соотношении к неудобству разработки?
  • MM_ASH (13.05.08 11:25) [4]
    2D[u]fa
    Если говорить конкретно то разница получается в один лишний CALL
    И вот еще вопрос.. как размер VMT сказывается на быстродействии? Т.е. есть ли связь в скорости выполнения программы и глубиной дерева наследования ее классов.
  • Дмитрий К © (13.05.08 11:46) [5]

    > MM_ASH

    "Идеологическое FAQ" читал?
    http://kolmck.net/docs/rart001.htm
  • MM_ASH (13.05.08 11:53) [6]
    >>Дмитрий К
    понятно почему так сделано - для того что бы отсекать не используемый код.. но там нет прямого ответа на мои вопросы..
  • D[u]fa (13.05.08 12:56) [7]
    прямой ответ - сделано все, что может уменьшить размер..
  • MM_ASH (13.05.08 14:23) [8]
    :-)
    Значит без указателей на метод все же быстрее...
    Ладно спасибо!
    А по второму вопросу есть мысли?
    >>как размер VMT сказывается на быстродействии? Т.е. есть ли связь в скорости выполнения программы и глубиной дерева наследования ее классов.
Есть новые Нет новых   [134431   +15][b:0][p:0]