624просмотров
13 февраля 2025 г.
Score: 686
=== A LITTLE ABOUT CLR ===
Хочется чуть-чуть сказать об дизайне CLR.
По сравнению с JVM, CLR более прозрачна, в ней можно легко получить список всех загруженных модулей, там же классов и их членов. Смотря на систему методов не хочется блевать, как и всей структуры.
Из минусов CLR — хедер объекта в 24 байта, что значит, что если вы создаёте экземпляр класса с одной переменной типа int, то размер объекта будет составлять 28 байт (а то и 32 с выравниванием), вместо 4 байт, в случае использования структуры.
В джаве же хеадер составляет 8 байт, но я придерживаюсь, как и, впрочем, многие, что идеальный размер хедера это 16 байт, это позволяет балансировать между скоростью выполнения виртуальных методов и затратами памяти. Разработчики CLR объясняют лишние 8 байт тем, что при первоначальном дизайне C# было предусмотрено дальнейшее использование этих 8 байт для оптимизации работы Garbage Collector'а, и да, было предусмотрено, но до сих пор не реализованно… NIH (Not invented here) - Синдром неприятия чужой разработки — позиция в социальной, корпоративной культурах, при которой избегается использование уже существующих разработок, исследований, стандартов или знаний из-за их внешнего происхождения и затрат. исходный код можно посмотреть на github*