Снижение производительности C# для литералов Int32 для чисел с плавающей запятойC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Снижение производительности C# для литералов Int32 для чисел с плавающей запятой

Сообщение Anonymous »

В C# вы можете определить числовой литерал как int или double

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

    Double var1 = 56.1;
int var2 = 51;
Это типы по умолчанию, которым назначаются литералы. Однако игровой движок, над которым я работаю, использует числа с плавающей запятой для определения положения, вращения и т. д. Когда вещественному числу присваивается двойной литерал, т. е. float varFloat = 75.4; компилятор выдает ошибку, сообщая, что требуется двойной литерал быть плавающей точкой, и это правильно. Поэтому нужно превратить двойной литерал в число с плавающей запятой, т.е. float varFloat = 75.4f;. Однако, если задан литерал int, int неявно преобразуется в число с плавающей запятой. Т.е.

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

    float varFloat = 44; // This is fine.
Мой вопрос: достаточно ли умен компилятор, чтобы понять, что 44 должно быть числом с плавающей запятой? В противном случае это означает, что при каждом обращении к литералу также выполняется преобразование. В большинстве случаев это действительно не имеет значения. Но с высокопроизводительным кодом потенциально может стать проблемой (даже если она незначительная), если повсюду используются целые числа вместо чисел с плавающей запятой. Насколько мне известно, невозможно изменить эти литералы на числа с плавающей запятой, не просматривая строки исходного кода, на что на самом деле тратится совсем не зря время.

Итак, компилятор преобразует литерал int в литерал с плавающей запятой? Если нет, то что можно сделать с этой тратой вычислительной мощности, кроме попыток избежать ее?

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

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

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

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

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

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

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