Как я могу программно нагружать процессор моего телефона?
Итак, я разогнал свой телефон до 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"
Мы думаем дальше - получим еще пару тестов, "тяжелую книгу" и "большую страницу".
алгоритм расчета:
- Тест "Пи"
Возьми скорость Пи. Подсчитайте десять миллионов отметок с помощью медленного алгоритма "Серия Авраама Шарпа". Повторите измерения несколько раз, возьмите среднее значение.
- Тест "Angry Birds"
Возьмите самые первые Angry Birds (не обязательно, но эти версии не самые оптимизированные)
Измерьте время от запуска до первых звуков музыки. Выход. Сразу бегать снова и снова. Повторите несколько раз и возьмите среднее.
- Тест "Большая страница"
Измерьте время загрузки тяжелых страниц сайта. Вы можете сделать это с вашим любимым браузером:)
Вы можете использовать эту ссылку (извините за кириллицу)
Эта страница поддерживается с помощью "браузера компьютеров" вместе с картинками. Всего получается 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 - это ядро приложения