Илья Ермаков писал(а):
Речь же идёт не о какой-нибудь интерпретации в рантайме. А просто о коммутации модулей (виртуальный вызов по переменному адресу вместо статически прошитого)
Это вы мне объясняете
В известной Вам среде (в "классическом" пакете) именно так все и устроено.
Можно даже сказать, что сверх-так: даже if-ы и циклы сидят на этих ((не побоюсь этого слова)) "абстрактных разъемах".
И подтверждаю - все надежно, аж до безобразия. Баги могут сидеть только в кодах элемента (читай - модуля), написанных на скриптовом языке.
И поиск такого элементика - тупой до немогу: методом "деления пополам". Выделил (тупо) половину схемы, удалил, посмотел на багу, принял решение про нужную половину - и т.д., рекурсивно.
Кстати говоря, именно из-за этого "сверх-так" и заметнее у нас "потери на разъемах"
Илья Ермаков писал(а):
Для области не-микроконтроллеров несерьёзно обсуждать какую-то потерю эффективности на этом (в общем случае, для таких служб, как файлы и т.п.), а качество решения принципиально иное (ну вот часто хоть убейся надо всё перетыкать "на лету" - например, серверные службы не остановишь и не заменишь на заново слинкованную версию). Так же как в общем случае несерьёзно отказываться от контроля границ массивов ради выжимания капель скорости (и то на локализованных числодробилках).
Сразу про главное: ЕСЛИ речь идет идет о выборе меньшего из двух зол, то я категорически выберу надежность.
А теперь о деталях
1) Какими малыми не казались потери, их, во-первых, надо сравнивать с чем-то, а не просто так "несерьезно". Во-вторых, и числодробительные задачи в природе существуют, и области для микроконроллеров отмирать как-то не очень собираются. И в-третьих, давайте задумаемся о причинах, ради которых следует мириться дже с незначительными потерями.
2) Про во-первых. Как-то я упоминал FastMathParse... Так вот, написать в нем такую формулищу, время исполнения которой хотя бы сравнимо с временем "прохода сигналов через разъемы" (аргументы для вычислений тоже запрашиваются через "разъемы", хотя раньше я об этом не упоминал) - крайне затруднительно. Это экспериментальный факт.
Да, не каждый день у меня спрашивают "
а чё оно работает медлене явы". Но когда спросят, я испытываю некий дискомфорт от необходимости объяснять, что на алгоритмической ветке (это у нас так принято называть структурную единицу алгоритма) цикла в его схеме сидит под сотню тех самых "разъемов".
3) Про во-вторых забыл сказать. Поставить клиенту микро-ось со всеми необходимыми каркасами - это вариант, допустим даже, что и достойный уважения. Но существует задача "отсечения всего лишнего". И достойная не меньшего уважения. Причины могут быть самыми разными. И embeded - одна из простейших, и далеко не единственная. Ровно в тот момент, когда мне скажут, что это уже "несовременно", я буду категорически возражать. Скажите ???
А вот тут, должен Вам отметить, что технология раздельной компиляции интеферирует с ООП просто кошмарным образом. Грубо говоря, ни один линкер не определит, что подавляющее количество методов в VMT никогда не используюся в этом конкретном проекте. И именно эта "интерференция" и делает в основном из банальных задач многометровые exe-шники.
4) Ну и наконец про причины, по которым я должен мириться ДАЖЕ с "микронными" потерями. Она могла быть только одна - все сразу не делается, придет время и будет нам счастье.
Не придет, если мы будем сидеть и ждать пока оно придет. Как отмечал уже выше - не первое десятилетие ждем.
И что же я слышу ??? Что оптимизация - это от лукавого, оказывается
Кстати говоря, даже т.н. мелкогранулярная оптимизация - вещь заметная, хоть и не настолько кошмарная, как вышеупомянутая интерференция. Правда тут я могу уверенно судить про те компиляторы, которые хорошо знаю.
Вроде бы Дельфи не самый худший из них... И если вспомнить, не к ночи упомянутый KOL, то там на многие коды есть их же асм-версии. Хорошо знаю код AlignChildrenProc. Так вот, НЕ будучи профессионалом (так, за выходные), я обошел дяденьку Бормана в полтора раза (~600байт против ~1К). А ведь там была та самая мелкогранулярная оптимизация... Про FPC даже и говорить не буду, чтобы не растраиваться.
Спрашивается почему я должен терять эти 30-40% эффективности ??? Потому-что говорить об этом не серьезно, что ли ???
Почему я говорил про это... Потому-что все время как-то так получается, что золотая пуля давно найдена, а все остальное - "несерьезно".
Нефига она не найдена ((может в этом и есть то самое "какое-то недопонимание"?))
И я ее не нашел еще. Но я зато знаю, что ее надо искать