Сообщение 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)
Можно же было это сделать на уровне компилятора.
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)
Можно же было это сделать на уровне компилятора.
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)
Можно же было это сделать на уровне компилятора.