Как я могу программно нагружать процессор моего телефона? - PullRequest
7 голосов
/ 13 сентября 2011

Итак, я разогнал свой телефон до 1,664 ГГц, и я знаю, что есть приложения, которые проверяют производительность процессора вашего телефона и stressers , но я бы хотел как-нибудь сделать свой собственный.Каков наилучший способ заставить ваш процессор работать?Я думал просто сделать цикл for, сделать миллион итераций и заняться какой-то трудоемкой математикой ... но это не сработало, потому что мой телефон сделал это за несколько миллисекунд, я думаю ... я попробовал триллионы итераций ...приложение зависло, но мой диспетчер задач не отображал процессор, даже используемый приложением.Обычно приложения для стресс-теста отображаются красным и говорят: процессор: 85%, оперативная память: 10 Мб ... Так как же заставить мой процессор серьезно думать?

Ответы [ 2 ]

1 голос
/ 04 февраля 2013

Я бы предложил немного другой тест, это не простые математические алгоритмы и функции.Есть много странных тестов, результаты которых всегда содержат все отзывы.Вы запускаете приложение, оно работает некоторое время, а затем выдает результат в стандартных баллах.Чем больше очков больше (или меньше), тем лучше считается устройство.Но то, что результаты сравнения значат в реальной жизни, не всегда понятно.И не все.Что касается математики, первое, что приходит на ум, - это огромное количество знаков после запятой и задача подсчитать число «пи»

ОК.Нет проблем, мы сделаем это:

Вот тест номер один - " Число Пи " - сколько времени потребуется вашему телефону, чтобы вычислить десять миллионов цифр числа Пи (3,14) (если бы кто-то произнес эту фразу сто лет назад, точно бы сразу отправился в психиатрическую больницу)

Когда вы чувствуете, что телефон работает медленно.Вы включаете / поворачиваете интерфейс.Но как это измерить - неясно.Angry Birds работают на разных устройствах в разное время - возможно, тест «Angry Birds»

Мы думаем дальше - получим еще пару тестов, «тяжелую книгу» и «большую страницу».

алгоритмиз расчета:

  1. Тест "Пи"

Взять Скорость Пи.Подсчитайте десять миллионов марок с помощью медленного алгоритма «Серия Авраама Шарпа». Повторите измерения несколько раз, возьмите среднее.

  1. Тест «Angry Birds»

Возьмите самый первыйAngry Birds (не обязательно, но эти версии не самые оптимизированные)

Измерьте время от запуска до первых звуков музыки. Выход. Немедленно бегайте снова и снова. Повторите несколько раз и возьмите среднее значение.

  1. Тест "Большой страницы"

Измерение времени загрузки страниц большого объема. Это можно сделать с помощью вашего любимого браузера:)

Вы можетеиспользуйте эту ссылку (извините за кириллицу)

Эта страница поддерживается с помощью "браузера компьютеров" вместе с изображениями. Всего получается 6,5 МБ и 99 файлов (я все еще на этомстраница в его сохраненной версии небольшого звукового файла)

Все 99 файлов загружаются на телефон. Отключите Wi-Fi и мобильный Интернет (это важно!)

Страница открывается в вашем браузере. Нажмите "назад"кнопка.А теперь нажмите «Вперед» и измерьте время полной загрузки страницы.И так несколько раз.Назад-вперед, назад-вперед.Как обычно, мы берем среднее значение.

Все результаты выдаются в секундах.

Во время тестирования всех устройств, поддерживающих карты microSD, было одно и то жеКарта Transcend 16 Gb, класс 10. И все данные на ней.

Ну и фактические результаты тестов для некоторых устройств РЕЗУЛЬТАТ ИСПЫТАНИЙ

1 голос
/ 13 сентября 2011

Чтобы скомпилировать строку регулярного выражения:

Pattern p1 = Pattern.compile("a*b"); // a simple regex
// slightly more complex regex: an attempt at validating email addresses
Pattern p2 = Pattern.compile("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b");

Вам необходимо запустить их в фоновых потоках:

class RegexThread extends Thread {
   RegexThread() {
      // Create a new, second thread
      super("Regex Thread");
      start(); // Start the thread
   } 

   // This is the entry point for the second thread.
   public void run() {
      while(true) {
        Pattern p = Pattern.compile("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b");
      }
   }
}

class CPUStresser {
   public static void main(String args[]) {
      static int NUM_THREADS = 10, RUNNING_TIME = 120; // run 10 threads for 120s
      for(int i = 0; i < NUM_THREADS; ++i) {
         new RegexThread(); // create a new thread
      }
      Thread.sleep(1000 * RUNNING_TIME);
   }
}

(код выше присваивается из здесь )

Посмотрите, как это происходит.

...