ddv wrote:Похоже что многие java программисты и вправду уверенны, что VM обладает экстрасенсорными и паронормальными возможностями,т.к. может "учитывать" не используя память , реализовывать RTTI механизмы не загружая информацию о классах в память, угадывать место расположение виртуальных методов после выкидывания ненужных вместе с информацией о полной структуре класса...и т.п.
Мне трудно сказать в чем уверены Java программисты, есть большое количество разных JVM, но информации в сети предостаточно. Java HotSpot была интересной штукой еще 10 лет назад, и стала работать с тех пор гораздо быстрее
http://java.sun.com/products/hotspot/do ... Id=1082375
В .NET угадывать виртуальные методы не нужно, они явно обозначаются программистом. Как и легко определить неиспользуемые
private методы, что позволяют многие средства даже без компиляции вообще (C# / Java синтаксис гораздо моложе и проще чем C++). И да, информация о типах, ака metadata, содержится в исполняемом модуле отдельно от кода классов. И да, .NET в подавляющем большинстве случаев компилирует по методам (если иначе не указано хинтами), и при a=false
код b() будет жить на диске долго, и никогда не будет сконвертирован в машинный код.
Что до производительности, есть вполне очевидная вещь, что если есть два динамически собираемых модуля A и B, в одном из которых есть нечто вроде
Code: Select all
namespace A { class X { public: static int Y(int z) { return z+5; }} }
Если модуль B откомпилирован, то A::X::Y(10) будет занимать кучу времени. В то время как в случае если A и B managed, вызов скорее всего будет inline.
Вот что заметно, так это что отдельные C++ - only программисты почему-то относятся к этому языку как к священной корове, не допуская что компиляторы бывают и у других языков. А если это C++ Windows-only программисты, то и самая мысль что программа может распространяться не в виде жестко откомпилированных в машинный код модулей, а требовать доводки на месте кажется кощунственной. Хотя при этом принимают чуть меньшую степень такой доводки, ака динамическую сборку, как должное. Чудеса, да и только. Но проходит со временем
