Есть ли способ определить, будет ли метод встроен в C # - PullRequest
0 голосов
/ 11 февраля 2009

Скажем, вы переопределяете operator* для point3 и float, а затем для float и point3 вы использовали оператор следующим образом:

point3 * float

Можете ли вы знать, будет ли метод оператора в конечном итоге встроенным?

Ответы [ 3 ]

5 голосов
/ 11 февраля 2009

Нет, точно не скажешь. В частности, потому что это делается во время JIT, это будет зависеть от версии CLR - и я считаю, что 64-битная CLR также отличается от 32-битной. Это также будет зависеть от того, включены ли оптимизации (например, отладка и т. Д.).

Вы можете предотвратить встраивание с помощью MethodImplAttribute , но это не очень помогает ...

2 голосов
/ 11 февраля 2009

Нет способа узнать, будет ли конкретный метод встроен или нет. Сам C # никогда не встроит вызов метода. Только JITer сделает это. Хотя есть определенные операции, которые могут быть встроены, JITer не дает никаких гарантий.

2 голосов
/ 11 февраля 2009

Насколько я знаю, нет способа узнать наверняка, поскольку JIT отвечает за встраивание.

...