Я хочу, чтобы проверить свою скорость выполнения кода, мой код:как проверить скорость выполнения кода в android?
public static String foo() {
final long startTime = System.currentTimeMillis();
try {
// my code here
long final endtime = System.currentTimeMillis();
System.out.println ("Total execution time:" + (endtime - startTime));
return msg;
} Catch (GeneralSecurityException e) {
return "ERROR";
}
}
, но после того, как выполнить этот код несколько раз (повторить тест), я нахожу разницу между общим исполнением того же кода. Я предполагаю, что это потому, что системы загружены фоновым процессом. Есть лучший способ сделать это?
Как долго длится ваш код? Если он завершится быстро (менее секунды), вы захотите запустить его несколько раз и разделить на количество прогонов. Кроме того, предпочитайте 'System.nanoTime()' над 'System.currentTimeMillis()', поскольку первый использует монотонные часы. – fadden
@fadden да, он работает менее 1 секунды, поэтому нет способа получить реальное время выполнения кода без влияния процесса загрузки системы? также, спасибо за предложение нанотима :) –
Возможно, он не имеет ничего общего с фоновыми процессами. Мобильные устройства работают на низкой мощности при работе на холостом ходу и не храните часы до тех пор, пока нагрузка не будет на определенное время. Если ваш код работает полностью в период нарастания, он не завершится так быстро, как если бы процессор работал на полной скорости. С другой стороны, часы могут замедляться из-за теплового дросселирования. И если вы работаете в AsyncTask, сам поток работает с меньшим приоритетом. Бенчмаркинг трудный. :-) Найдите способ выполнить тот же код 100x, а затем разделите время на 100. – fadden