Re[42]: benchmark
От: alex_public  
Дата: 13.01.17 00:45
Оценка: +1
Здравствуйте, pilgrim_, Вы писали:

_>>В то время как в C++ не только часто употребимы не виртуальные функции, но и для виртуальных компилятор гарантированно осуществляет инлайнинг, если они вызваны от обычной переменной (а не от указателя или ссылки).

_>Если под выделенным ты имел ввиду не инлайнинг, а прямой вызов функцуии, то .NEt JIT умеет такое делать.

Я имел в виду как раз инлайнинг, точнее его потенциальную возможность (а осуществлять его или нет компилятор решает сам в зависимости от вида функции — для мелких можно считать гарантированно заинлайнит).

Но даже если говорить про прямой вызов, то как по твоему компилятор C# будет способен это сделать, если там всегда можно написать такой код (где B и C наследники A; а f — виртуальная функция, переопределённая в них):
A a;
if(х) a=new B();
else a=new C();
a.f();

Как по твоему компилятор сможет подставить здесь прямой вызов? )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.