Перенос двойников без накладных расходов в CsharpC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Перенос двойников без накладных расходов в Csharp

Сообщение Anonymous »

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

Код: Выделить всё

public readonly struct MyDouble
{
public readonly double Value;

public MyDouble(double value)
{
Value = value;
}

public static MyDouble operator +(MyDouble self, MyDouble value)
{
return new MyDouble(self.Value + value.Value);
}

public static MyDouble operator *(MyDouble self, double value)
{
return new MyDouble(self.Value * value);
}
}

и хотя их простое создание, сохранение и извлечение происходит так же быстро, как и для двойных чисел, как только я использую операторы, производительность снижается по сравнению с необработанной двойной арифметикой.
Я думал, что это просто вопрос присоединения, но добавление к операторам атрибутов MethodImpl.AggressiveInlining совершенно не помогло.
Я проверил низкую производительность с помощью модульных тестов а также использование Dottrace JetBrain в производственных проектах.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-csharp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»