Информация об изменениях

Сообщение Re[4]: Можно ли делать вставки MSIL в код на c# ? от 03.11.2016 13:12

Изменено 03.11.2016 13:42 SergeyY

Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, Sharov, Вы писали:


S>>>Нормальной быстрой математики под дотнет нет, большинство реализаций ничего кроме фейспалма не вызывают. Как пример.


S>>https://www.centerspace.net/nmath


S>>Но там нет того, что нужно ТС.


L>Еще есть: http://numerics.mathdotnet.com/

L>Но, там пока тоже нет длинной арифметики.


Любую длинную арифметику я могу написать сам, и эта задача — интересная и даже простая, по сравнению с задачей оптимизации — заставить программу, просто прочитать RDX регистр,
вместо того чтобы городить 4 умножения, где могло быть одно, и также, потери при операциях с делением.

Будь я разработчиком .NET Framework, не оставил бы без реализации такую очевидную возможность процессора. (деление 128 бит на 64 бит, или умножение 64 бит на 64 бит, и получение 128 бит).
Да, можно перейти на C++ и даже почти целиком, но тогда теряешь остальные вкусные преимущества C#


Я думаю,

ulong * ulong трансформируется в inline-метод, типа,

ulong Multiply (ulong a, ulong b)

а был бы — перегруженный, аналогичный

ulong Multiply (ulong a, ulong b, ref ulong resultHighPart)

Можно же было это сделать на уровне компилятора.
Re[4]: Можно ли делать вставки MSIL в код на c# ?
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, Sharov, Вы писали:


S>>>Нормальной быстрой математики под дотнет нет, большинство реализаций ничего кроме фейспалма не вызывают. Как пример.


S>>https://www.centerspace.net/nmath


S>>Но там нет того, что нужно ТС.


L>Еще есть: http://numerics.mathdotnet.com/

L>Но, там пока тоже нет длинной арифметики.


Любую длинную арифметику я могу написать сам, и эта задача — интересная и даже простая, по сравнению с задачей оптимизации — заставить программу, просто прочитать RDX регистр,
вместо того чтобы городить 4 умножения (+ обнуления частей + операции сложения), где могло быть одно умножение, и также, потери при операциях с делением.

Будь я разработчиком .NET Framework, не оставил бы без реализации такую очевидную возможность процессора. (деление 128 бит на 64 бит, или умножение 64 бит на 64 бит, и получение 128 бит).
Да, можно перейти на C++ и даже почти целиком, но тогда теряешь остальные вкусные преимущества C#


Я думаю,

ulong * ulong трансформируется в inline-метод, типа,

ulong Multiply (ulong a, ulong b)

а был бы — перегруженный, аналогичный

ulong Multiply (ulong a, ulong b, ref ulong resultHighPart)

Можно же было это сделать на уровне компилятора.