Как я могу программно нагружать процессор моего телефона?

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

2 ответа

Решение

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

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);
   }
}

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

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

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

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

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

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

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

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

  1. Тест "Пи"

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

  1. Тест "Angry Birds"

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

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

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

Измерьте время загрузки тяжелых страниц сайта. Вы можете сделать это с вашим любимым браузером:)

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

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

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

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

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

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

Ну, а реальные результаты тестов для некоторых устройств РЕЗУЛЬТАТ ТЕСТА

https://play.google.com/store/apps/details?id=xcom.saplin.xOPS - приложение обрабатывает числа (целые и с плавающей запятой) в нескольких потоках (в 2 раза больше ядер) и строит графики производительности и температуры процессора.

https://github.com/maxim-saplin/xOPS-Console/blob/master/Saplin.xOPS/Compute.cs - это ядро ​​приложения

Другие вопросы по тегам