Я пытаюсь измерить, насколько быстро с момента запуска приложения в моем приложении выполняются определенные операции. Для этого я пытаюсь использовать 2 метода:
Согласно моему пониманию, getElapsedCpuTime возвращает количество миллисекунд с момента запуска приложения, а getStartElapsedRealtime возвращает время, когда приложение было запущено. Из-за этого, если я вычту Process.getStartElapsedRealtime
из 'SystemClock.elapsedRealtime () I should get a similar value as one returned from
Process.getElapsedCpuTime`.
, вот пример реализации:
Long processStartTime = Process.getStartElapsedRealtime();
Long systemClock = SystemClock.elapsedRealtime();
long processTime = systemClock - processStartTime;
Long elapsedTime = Process.getElapsedCpuTime()
//processTime should have a similar value to elapsedTime
Когда я реализовал выше, то Я заметил, что SystemClock.elapsedRealtime() - Process.getStartElapsedRealtime()
отличается от Process.getElapsedCpuTime()
. Иногда разница составляет всего 500 миллисекунд, но иногда SystemClock.elapsedRealtime() - Process.getStartElapsedRealtime()
в 2 раза больше, чем Process.getElapsedCpuTime()
Почему существует разница между этими двумя временными показателями?