Здравствуйте, chaotic-kotik, Вы писали:
CK>Здравствуйте, Serginio1, Вы писали:
S>>Отсутствие инлайна основная проблема. Для оптимизации никто не запрещает использовать структуры. Да проблема с массивами на стеке (в классе), но это уже мелочи.
CK>Чтобы работал GC компилятор дотнета вставляет дополнительный код (барьеры). Чтобы проверять на выход за границу массива компилятор дотнета генерирует кучу проверок. Помнится, несколько лет назад, JIT в дотнете не мог очень простой цикл развернуть. А вы тут ждете каких-то чудес производительности от инлайна делегатов. Чтобы приблизиться к С++ по производительности нужно не только компилятор исправить, но и например переписать полностью стандартную библиотеку таким образом, чтобы она не выделяла память на каждый чих без лишней необходимости и чтобы работа на низком уровне абстракции (работа с памятью напрямую) не выглядела так, как она выглядит сейчас. На С++ ведь реально код на порядок проще получается, если нужно писать что-то близкое к железу и производительное.
Еще раз повторю. Время идет и все меняется. Те же циклы типа
for(int i=0;i<ar.Length,i++)
var a=ar[i];
Никаких проверок не будет. А для работы с матрицами есть SIMD.
Речь, не идет о замене C++. Речь идет о увеличении производительности .Net кода.
Большинству не нужна скорость выполнения, а нужна скорость разработки. Я 1С ник, и в большей степени у нас упирается в БД. А вот легкость создания клиент-серверного имеет большее значение