Вопрос

Я работаю над математической библиотекой для моего DirectX 3D-двигателя в C #.Я использую Slimdx, который является прекрасным собранным и мощной библиотекой.SLIMDX предоставляет довольно много математических классов, но они на самом деле являются обертками вокруг собственных объектов D3DX, поэтому, в то время как сами объекты очень, очень быстро, Interop не полагаю, потому что мой управляемый C # код превосходит их.

Мой конкретный вопрос имеет отношение к сравнению с плавающей точкой.Вид канонического способа - определить значение эпсилона и сравнить значение для разницы между значениями с плавающей точкой для определения близости, например:

float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
  return Math.Abs(a - b) < Epsilon
}
.

Накладные расходы на вызов функции будут бороться на фактическое сравнение, поэтому эта тривиальная функция будет включена в C ++, будет ли это компилятор C #?Есть ли способ сказать компилятору C #, что я хочу, чтобы набранный метод?

Это было полезно?

Решение

Компилятор C # не выполняет встроен - но джит вполне может сделать это в этом случае.Это, безусловно, часть, который будет встроить встроить, во всяком случае.

Редактировать: я бы ожидаю, что в этом случае его встроен, но трудно сказать без загрузки кода во что-то вроде CODDBG с включенными jit Optimizations.Каждая другая версия CLR вполне может иметь разные настройки к его встронению (включая 64 бит против 32 битных CLR), поэтому я не хочу сказать что-либо слишком определенное.

Другие советы

Вот некоторая информация об обстоятельствах, при которых JIT не будет выполнять встроиться;

http://blogs.msdn.com/b/davidnotario/archive/2004/11/01/250398.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top