FCallДобавить оптимизацию - PullRequest
1 голос
/ 29 июня 2011

Этот вопрос принес точку оптимизации операции десятичного суммирования.Однако в реализации типа Decimal вся операция суммирования откладывается до внешней функции:

[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern void FCallAdd(ref Decimal result, Decimal d1, Decimal d2);

Это означает, что этот метод реализован в самом CLR.Теперь ecall.cpp имеет ссылку на

FCFuncElement("FCallAdd", COMDecimal::DoAdd)

, которая вызывает функцию comdecimal.cpp

STDAPI DecAddSub(LPDECIMAL pdecL, LPDECIMAL pdecR, LPDECIMAL pdecRes, char bSign)

UPDATE

На основе комментария нижеоптимизация происходит внутри самого компилятора.Я перефразирую вопрос таким образом.Может кто-нибудь указать, где я могу получить информацию об этих оптимизациях?

1 Ответ

1 голос
/ 29 июня 2011

Оптимизация в вопросе, на который вы ссылаетесь, не была выполнена внутри этого вызова, а выполнена компилятором.Компилятор «знает», что добавление 0,00m к decimal ничего не делает, поэтому сгенерированный им IL просто не включил это добавление decimal.Другими словами, FCallAdd никогда не вызывался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...