На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (21) « Первая ... 14 15 [16] 17 18 ...  20 21  ( Перейти к последнему сообщению )  
> ООП - в топку!
    Цитата JoeUser @
    По большому счету можно описать вектор N-обработчиков в виде указателей на функции и логическую M-матрицу (матрицу переходов), которую можно грузить как данные.
    Тогда возникает другой вопрос: где здесь "логические матрицы"?
    Цитата JoeUser @
    Некое недалекое подобие шитого кода.
    Шитый код и есть. Только косвенный шитый код.

    Подобный формат имеют метафайлы Windows (wmf, emf), и некоторые другие файлы.
    Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными, и приходится воспринимать их просто как коды. А коды удобнее брать по порядку, тогда их можно использовать как индексы в таблице переходов (КШК, байт-код).
    С кодами работают большинство интерпретаторов.
    Ещё быстрее работает, если использовать не таблицу функций, а засунуть все обработчики в switch внутри цикла. В таком варианте получается на один переход меньше - не надо возвращаться из функции.

    ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке.
      Цитата amk @
      Тогда возникает другой вопрос: где здесь "логические матрицы"?

      Сорь, с терминологией напутал - матрицы переходов.
      Цитата amk @
      Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными

      А вот тут как программу писать. Мы же не сами адреса храним, а индексы подпрограмм, в которых, собственно, адреса. Если я не ошибаюсь, это подход Форта?
        Цитата amk @
        ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке.

        В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней. Qraizer, хелп - тону!!!
          Я командировке :(
            Цитата Qraizer @
            Я командировке

            Ну тогда жду (ждем).
              Цитата JoeUser @
              Ну тогда жду (ждем).

              Так а че, погуглить не? :huh:
              https://ravesli.com/urok-167-virtualnye-tablitsy/
              https://rsdn.org/article/devtools/CppPerformance.xml#EKSBG
                Цитата Wound @
                Так а че, погуглить не?

                Гуглить умею. Честное слово. Честное студенческое слово!
                Но эти стопицот многобукв Qraizer может выразить двумя-тремя предложениями, я знаю.
                И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам.
                  Цитата JoeUser @
                  Если я не ошибаюсь, это подход Форта?

                  Ошибаешься. Форт (FORTH) вообще не хранит вне оперативки двоичный код (только исходники, только хардкор). Благо компиляция в шитый код происходит на порядки быстрее, чем в любом другом интерпретаторе.
                  Хотя есть интерпретаторы, позволяющие записать на диск образ памяти. В самой программе шитый код, как правило, представляет собой просто последовательность абсолютных адресов исполняемых частей статей (так в форте называются определяемые пользователем слова). Для слов, определяемых в машинном коде, там просто находится процедура, выполняющая нужные действия. У слов, определяемых через двоеточие там находится вызов подпрограммы, запускающей интерпретацию шитого кода. Это так называемый прямой шитый код.
                  Другой разновидностью шитого кода является подпрограммный шитый код, в котором вместе с адресами записываются и команды вызова подпрограмм. Занимая немного больше места, такой шитый код выполняется немного быстрее, так как не использует цикла интерпретации. Использовался в некоторых интерпретаторах для 8-разрядного i8080 и его аналогов. Давал почти трёхкратный прирост скорости, за счёт полуторакратного раздувания кода.
                  Третий, самый редкий вариант, - использование косвенного шитого кода, когда пишутся индексы (номера) статей. Этот вариант иногда позволяет сократить размер занимаемой памяти, при этом незначительно замедляется цикл интерпретации, и существенно усложняется компиляция. На практике имеет смысл только для очень простых программ, когда номер статьи помещается в один байт (для переменных тоже заводятся статьи), и для 32-разрядных интерпретаторов, когда вместо 4-байтного адреса можно хранить 2-байтный индекс.

                  Добавлено
                  Цитата JoeUser @
                  как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней
                  На современных процессорах (а также не очень старых) это делается двумя обращениями в память, без нарушения конвейера выполнения. А для проверки типа нужно не меньшее число обращений в память и по крайней мере одно рвущее работу конвейера сравнение (а может и больше). Для ускорения работы процедурные реализации полиморфизма, как правило, используют некоторое подобие VMT.
                  Сообщение отредактировано: amk -
                    amk, спасибо за инфу!!! Особенно про Форт. Если бы не его "польская нотация", наверное я был бы его фанатом. Красивый подход в плане организации. Но писать "задом на перед" ... ну не могу себя уговорить :) Смотрел как-то на его последователя - язык Фактор, та же хрень - интересно, но уговорить себя "перестроиться" не получается :)
                      Цитата JoeUser @
                      И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам.

                      Действительно смешно. То ты пишешь что никому не веришь, и даже в сторону Майерса камни кидаешь, то полагаешься целиком и полностью на ответ Qraizer:-?
                      Можно ведь в конце концов прочесть несколько источников. По тем ссылкам нет чего то заумного, просто описывается общий механизм работы дин. полиморфизма в С++, который можно прочесть практически в любой, более менее продвинутой книге по С++.
                        Цитата JoeUser @
                        В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней.

                        Нет. У тебя просто есть структура с адресами методов, и просто вызывается метод по данному адресу. Может ты это и имеешь ввиду под "выбирать" - хз, но amk говорил о том, что этим выбором занимаешься не ты => меньше шансов ошибиться.
                          Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ :lol:
                          Давай сосредоточимся на теме топика, это будет гораздо полезнее.

                          Добавлено
                          Цитата Wound @
                          и даже в сторону Майерса камни кидаешь

                          Дай пожалуйста пруф!!!
                          Скрытый текст
                          Я не думаю, что я такой смелый. :blink:
                            Цитата JoeUser @
                            Дай пожалуйста пруф!!!

                            Да пожалуйста, держи:
                            Цитата JoeUser @
                            Философское отступление. Несколько лет назад у меня спала "пелена из глаз". До этого, в течении многого времени, я считал себя заядлым агностиком. Многие вааще не понимали о чем речь. Но пришло осознание - я не агностик или атеист, я - неверующий. Даже религия тут не при чем! Я не верю ваще, ни во что. Полностью. Я пытаюсь воспроизвести и оценить. Гадил я с Пизанской башни на аксиомы "аксакалов". Но ... приду и проверю

                            ... это я кидаю камень в сторону Меерса

                            Есть "логика", есть высказывания Меерса, есть куча методик шкальных оценок достоверности. Ну и есть чуйка))) Поверил во "фьючерсы" - это не смертельно! Возьми вычлени репрезентативную выборку результатов синтетических тестов на своих данных - и ты поймешь. Нужно ли слепо идти за Мейерсом, или эффективнее просто прислушиваться, приглядоваться, записывать ходы... E2-E4?
                              Цитата JoeUser @
                              Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ
                              Нет уж, давай обсудим. :lol:
                              То ты гадишь на аксиомы "аксакалов", то доверяешь им :)
                              Сообщение отредактировано: applegame -
                                applegame, блин!!! >:(

                                Добавлено
                                А всегда тебя щетал полезным - а оно вот как!!! :-?

                                Добавлено
                                Цитата applegame @
                                То ты гадишь на аксиомы "аксакалов", то доверяешь им

                                Никогда такого не делал !!! >:(
                                Никогда не гадил! Вообще никогда!!!
                                Какал - это да, но это физиология.
                                А что попадал, так это стечение обстоятельств.
                                Ящетаю .
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (21) « Первая ... 14 15 [16] 17 18 ...  20 21


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0541 ]   [ 16 queries used ]   [ Generated: 29.03.24, 02:02 GMT ]