Оптимальное получение тысячных долей второй строки без GA / GC - PullRequest
2 голосов
/ 24 мая 2019

Как сделать отсчет тысячных долей секунды в качестве таймера без выделения мусора?

Я понимаю, что можно построить массив строк от 000 до 999 для 0,999 и получить соответствующую строку из них для каждой / любой тысячной доли второго сценария из thousandthsArray[nnn]

Однако, как мне отделить его от каждого временного отчета, каждого кадра, не создавая мусора в процессе разделения секунд.

например. текущее время 14,397

Мне нужно добраться до 397 и отделить их от 14 секунд без всякого мусора.

Но математические функции, кажется, создают маленький мусор, каждый кадр. И я не могу придумать ничего особенно оптимального. Или даже работает.

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

Я не думаю, что это возможно без создания любого мусора. Вы должны пойти на как можно меньше .

Вы можете использовать Mathf.Floor, который округляет его до последнего int, заставляя его "забыть" любые десятичные дроби, а затем вычесть его из исходного значения, например

float time = 14.6978f;

float fullSeconds = Mathf.Floor(time);
// = 14 (rounded down)

int thousandthOfSeconds = Mathf.RoundToInt((time - fullSeconds) * 1000); 
// = 698 (rounded up)

это по крайней мере намного дешевле, чем иметь дело с какими-либо строками.

0 голосов
/ 24 мая 2019

Существуют различные способы очистки неуправляемых ресурсов:

Реализация интерфейса IDisposable и метод Dispose. Блок «using» также используется для очистки неуправляемых ресурсов. Существует несколько способов реализации метода Dispose:

Реализация Dispose с использованием класса «SafeHandle» (это встроенный абстрактный класс с интерфейсом «CriticalFinalizerObject» и «IDisposable»). Метод Object.Finalize для переопределения (этот метод очищает неуправляемые ресурсы, используемые конкретным объектом, перед его уничтожением) Давайте посмотрим код ниже для удаления неуправляемых ресурсов:

Реализация удаления с использованием класса SafeHandle:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...