Re[18]: Да ну и фиг с этой Java-ой. .Net будет убит Rust-ом
От: Evgeny.Panasyuk Россия  
Дата: 09.08.16 14:26
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>> Еще раз С++ выигрывает за счет инлайнинга это известно всем. Шаблоны в отличие от дженериков по сути раскручиваются в исходный код с инлайнингом методов.

S>>>Вот и вся магия. Это же раскручивание можно сделать и для дженериков. Большой то разницы нет.
EP>>Вообще-то разница огромная.
EP>>Например замыкания в C++ можно принимать в ФВП по конкретному типу, то есть без всякого динамического полиморфизма — такое элементарно инлайнится. А вот косвенные вызовы на объектах произвольного размера инлайнить на порядки труднее.
EP>>Более того, инлайнинг это не единственный плюс относительно производительности — помимо этого например превалирующая value семантика.
S> Так и в C# тоже можно. Так же статически можно определить передаваемый тип.

C++:
template<typename F>
auto foo(F f)
{
    return f();
}

int main()
{
    auto x = 0;
    return foo([=]{ return x; });
}
Здесь внутри foo, ещё до всяких оптимизаторов, известен и конкретный тип замыкания F, и его размер, и конкретный вызываемый метод.
Аналог на C# в студию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.