Код ведет себя по-разному в режиме выпуска и в режиме отладки.
C# — противоречиво. Результат математической операции в 32- и 64-разрядной версии
Проблемы двойной точности в .NET
Почему это происходит вычисления с плавающей запятой дают разные результаты на разных машинах?
Я подозреваю, что причина моего метода определения FPS, который работает в режиме отладки и больше не работает в режиме выпуска, заключается в том, что потому что я использую Long для хранения значений времени. Вот соответствующий код:
Код: Выделить всё
public void ActualFPS()
{
if (Stopwatch.GetTimestamp() >= lastTicks + Stopwatch.Frequency)
{
actualFPS = runsThisSecond;
lastTicks = Stopwatch.GetTimestamp();
runsThisSecond = 0;
}
}
lastTicks — это переменная типа Long, и я считаю, что Stopwatch.GetTimestamp() также возвращается как Long (?). Это моя проблема? Если да, то есть какие-нибудь предложения, как обойти эту проблему?
РЕДАКТИРОВАТЬ: Секундомер использует таймер высокого разрешения.
EDIT2: Проблема решилась сама собой. Без каких-либо изменений в моем коде. Совсем. Никто. Я понятия не имею, что заставило его сломаться или починиться. Возможно, мой компьютер решил спонтанно учесть мои чувства?
Подробнее здесь: https://stackoverflow.com/questions/520 ... se-of-long