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

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


person Mohammad Adib    schedule 13.09.2011    source источник
comment
Убедитесь, что компилятор не оптимизирует ваш цикл полностью. Например, если вы никогда не используете результат вычисления, компилятор почти наверняка просто полностью удалит его.   -  person Ed S.    schedule 13.09.2011
comment
Похоже, вы убили (блокируете на неопределенный срок) поток пользовательского интерфейса. Создайте фоновые (или несколько фоновых) потоков и поместите в них несколько рабочих циклов - я подозреваю, что наблюдаемые результаты будут немного отличаться, но не знаю, удастся ли это нагрузить ЦП. (Я не занимаюсь разработкой Android.)   -  person    schedule 13.09.2011
comment
Как запустить несколько потоков и как использовать результат, но не показывать его пользователю?? Просто сделать thread.start() несколько раз? Извините, я хорошо разбираюсь в Java, но никогда в жизни не имел дела с тредами, лол.   -  person Mohammad Adib    schedule 13.09.2011
comment
Запустите фоновые потоки, которые компилируют миллионы строк регулярных выражений. Это довольно сложно для процессора, из личного опыта.   -  person    schedule 13.09.2011
comment
@ davids0n Не могли бы вы объяснить или показать код, который компилирует строки регулярных выражений ?? возможно в нескольких потоках?   -  person Mohammad Adib    schedule 13.09.2011
comment
Если вам захочется поучиться, вот несколько регулярных выражений: codeproject.com/KB/dotnet /regextutorial.aspx   -  person Stefan Kendall    schedule 13.09.2011
comment
Цикл внутри циклов и создание в них двумерной матрицы.   -  person SidJ    schedule 13.09.2011
comment
@ Шридхар... эй, это ошеломляет о.О.   -  person Mohammad Adib    schedule 13.09.2011


Ответы (3)


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

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

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

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

person Community    schedule 13.09.2011
comment
Огромное спасибо! Попробую, когда будет время! Я предполагаю, что Pattern - это класс, который мне не придется делать? РЕДАКТИРОВАТЬ: 10 потоков - это много? Что было бы довольно громоздкой нагрузкой на мой процессор? лол 100 тем? - person Mohammad Adib; 13.09.2011
comment
Шаблон — это встроенный класс. import java.util.regex.Pattern; Вы можете сделать 100 потоков, если хотите, но это цикл while(true) для каждого из потоков, который максимально загружает ЦП. - person ; 13.09.2011
comment
Я не совсем понимаю, что вы здесь сделали: [a-z0-9!#$%&'*+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*@(?:[a-z0-9] (?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|edu|gov|mil|biz|info |mobi|name|aero|asia|jobs|museum)\b Это самая большая тарабарщина, которую я когда-либо видел! ржу не могу - person Mohammad Adib; 13.09.2011
comment
Большое спасибо за вашу помощь. хороший человек. очень признателен :) - person Mohammad Adib; 13.09.2011

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

OK. Не проблема, сделаем:

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

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

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

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

  1. Тест "Пи"

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

  1. Тест «Злые птички».

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

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

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

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

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

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

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

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

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

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

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

person DaniMAX    schedule 03.02.2013

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

Снимок экрана

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

person Maxim Saplin    schedule 19.05.2020