Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.160.243.44] |
|
Страницы: (21) « Первая ... 14 15 [16] 17 18 ... 20 21 ( Перейти к последнему сообщению ) |
Сообщ.
#226
,
|
|
|
Цитата JoeUser @ Тогда возникает другой вопрос: где здесь "логические матрицы"?По большому счету можно описать вектор N-обработчиков в виде указателей на функции и логическую M-матрицу (матрицу переходов), которую можно грузить как данные. Шитый код и есть. Только косвенный шитый код. Подобный формат имеют метафайлы Windows (wmf, emf), и некоторые другие файлы. Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными, и приходится воспринимать их просто как коды. А коды удобнее брать по порядку, тогда их можно использовать как индексы в таблице переходов (КШК, байт-код). С кодами работают большинство интерпретаторов. Ещё быстрее работает, если использовать не таблицу функций, а засунуть все обработчики в switch внутри цикла. В таком варианте получается на один переход меньше - не надо возвращаться из функции. ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке. |
Сообщ.
#227
,
|
|
|
Цитата amk @ Тогда возникает другой вопрос: где здесь "логические матрицы"? Сорь, с терминологией напутал - матрицы переходов. Цитата amk @ Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными А вот тут как программу писать. Мы же не сами адреса храним, а индексы подпрограмм, в которых, собственно, адреса. Если я не ошибаюсь, это подход Форта? |
Сообщ.
#228
,
|
|
|
Цитата amk @ ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке. В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней. Qraizer, хелп - тону!!! |
Сообщ.
#229
,
|
|
|
Я командировке
|
Сообщ.
#230
,
|
|
|
Цитата Qraizer @ Я командировке Ну тогда жду (ждем). |
Сообщ.
#231
,
|
|
|
Цитата JoeUser @ Ну тогда жду (ждем). Так а че, погуглить не? https://ravesli.com/urok-167-virtualnye-tablitsy/ https://rsdn.org/article/devtools/CppPerformance.xml#EKSBG |
Сообщ.
#232
,
|
|
|
Цитата Wound @ Так а че, погуглить не? Гуглить умею. Честное слово. Честное студенческое слово! Но эти стопицот многобукв Qraizer может выразить двумя-тремя предложениями, я знаю. И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам. |
Сообщ.
#233
,
|
|
|
Цитата JoeUser @ Если я не ошибаюсь, это подход Форта? Ошибаешься. Форт (FORTH) вообще не хранит вне оперативки двоичный код (только исходники, только хардкор). Благо компиляция в шитый код происходит на порядки быстрее, чем в любом другом интерпретаторе. Хотя есть интерпретаторы, позволяющие записать на диск образ памяти. В самой программе шитый код, как правило, представляет собой просто последовательность абсолютных адресов исполняемых частей статей (так в форте называются определяемые пользователем слова). Для слов, определяемых в машинном коде, там просто находится процедура, выполняющая нужные действия. У слов, определяемых через двоеточие там находится вызов подпрограммы, запускающей интерпретацию шитого кода. Это так называемый прямой шитый код. Другой разновидностью шитого кода является подпрограммный шитый код, в котором вместе с адресами записываются и команды вызова подпрограмм. Занимая немного больше места, такой шитый код выполняется немного быстрее, так как не использует цикла интерпретации. Использовался в некоторых интерпретаторах для 8-разрядного i8080 и его аналогов. Давал почти трёхкратный прирост скорости, за счёт полуторакратного раздувания кода. Третий, самый редкий вариант, - использование косвенного шитого кода, когда пишутся индексы (номера) статей. Этот вариант иногда позволяет сократить размер занимаемой памяти, при этом незначительно замедляется цикл интерпретации, и существенно усложняется компиляция. На практике имеет смысл только для очень простых программ, когда номер статьи помещается в один байт (для переменных тоже заводятся статьи), и для 32-разрядных интерпретаторов, когда вместо 4-байтного адреса можно хранить 2-байтный индекс. Добавлено Цитата JoeUser @ На современных процессорах (а также не очень старых) это делается двумя обращениями в память, без нарушения конвейера выполнения. А для проверки типа нужно не меньшее число обращений в память и по крайней мере одно рвущее работу конвейера сравнение (а может и больше). Для ускорения работы процедурные реализации полиморфизма, как правило, используют некоторое подобие VMT. как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней |
Сообщ.
#234
,
|
|
|
amk, спасибо за инфу!!! Особенно про Форт. Если бы не его "польская нотация", наверное я был бы его фанатом. Красивый подход в плане организации. Но писать "задом на перед" ... ну не могу себя уговорить Смотрел как-то на его последователя - язык Фактор, та же хрень - интересно, но уговорить себя "перестроиться" не получается
|
Сообщ.
#235
,
|
|
|
Цитата JoeUser @ И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам. Действительно смешно. То ты пишешь что никому не веришь, и даже в сторону Майерса камни кидаешь, то полагаешься целиком и полностью на ответ Qraizer'а Можно ведь в конце концов прочесть несколько источников. По тем ссылкам нет чего то заумного, просто описывается общий механизм работы дин. полиморфизма в С++, который можно прочесть практически в любой, более менее продвинутой книге по С++. |
Сообщ.
#236
,
|
|
|
Цитата JoeUser @ В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней. Нет. У тебя просто есть структура с адресами методов, и просто вызывается метод по данному адресу. Может ты это и имеешь ввиду под "выбирать" - хз, но amk говорил о том, что этим выбором занимаешься не ты => меньше шансов ошибиться. |
Сообщ.
#237
,
|
|
|
Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ
Давай сосредоточимся на теме топика, это будет гораздо полезнее. Добавлено Цитата Wound @ и даже в сторону Майерса камни кидаешь Дай пожалуйста пруф!!! Скрытый текст Я не думаю, что я такой смелый. |
Сообщ.
#238
,
|
|
|
Цитата JoeUser @ Дай пожалуйста пруф!!! Да пожалуйста, держи: Цитата JoeUser @ Философское отступление. Несколько лет назад у меня спала "пелена из глаз". До этого, в течении многого времени, я считал себя заядлым агностиком. Многие вааще не понимали о чем речь. Но пришло осознание - я не агностик или атеист, я - неверующий. Даже религия тут не при чем! Я не верю ваще, ни во что. Полностью. Я пытаюсь воспроизвести и оценить. Гадил я с Пизанской башни на аксиомы "аксакалов". Но ... приду и проверю ... это я кидаю камень в сторону Меерса Есть "логика", есть высказывания Меерса, есть куча методик шкальных оценок достоверности. Ну и есть чуйка))) Поверил во "фьючерсы" - это не смертельно! Возьми вычлени репрезентативную выборку результатов синтетических тестов на своих данных - и ты поймешь. Нужно ли слепо идти за Мейерсом, или эффективнее просто прислушиваться, приглядоваться, записывать ходы... E2-E4? |
Сообщ.
#239
,
|
|
|
Цитата JoeUser @ Нет уж, давай обсудим. Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ То ты гадишь на аксиомы "аксакалов", то доверяешь им |
Сообщ.
#240
,
|
|
|
applegame, блин!!!
Добавлено А всегда тебя щетал полезным - а оно вот как!!! Добавлено Цитата applegame @ То ты гадишь на аксиомы "аксакалов", то доверяешь им Никогда такого не делал !!! Никогда не гадил! Вообще никогда!!! Какал - это да, но это физиология. А что попадал, так это стечение обстоятельств. Ящетаю . |