Re[17]: Java vs C# vs C++
От: vdimas Россия  
Дата: 02.10.15 16:59
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

V>>Когда твоя джава получит указатель на объект "откуда-то еще", никакой девиртуализации при вызове не происходит, оно происходит аккурат в аналогичном приведенному сценарии.


EP>Справедливости ради, в некоторых из таких случаев девиртуализацию может сделать JIT


Справделивости ради — нет. ))
Если JIT "не видел", откуда получен объект, то никакой девиртуализации не будет. А если видел — то это он всего-лишь проинлайнил тот самый вызов, в котором встретилось new для целевого объекта. Дык, возможности инлайна в С++ на порядки больше.


EP>Кстати, тут недавно был синтетический бенчмарк, в котором как раз был сделан сильный упор на JIT/девиртуализацию и GC, буквально задача на которой они раскрываются во всей красе — так даже и его получилось забороть
Автор: Evgeny.Panasyuk
Дата: 29.06.15
подсчётом ссылок и изначально меньшей виртуальностью (примерно то о чём ты говорил).


Синтетические бечмарки фтопку. Реально. Потому что они заставляют на С++ писать АНАЛОГИЧНЫЙ управляемому код исключительно с целью бенчмарка. ))

А в реальной жизни на С++ пишут нифига не аналогичный код, бо система типов такова, что там, где на Джаве или дотнете всё разруливается через интерфейсы и виртуальные вызовы (и только через них, родимых), на С++ всё разруливается на шаблонах еще на этапе компиляции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.