Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

работа с тяжелыми задачами - Программирование Android

07.07.2015, 14:12. Просмотров 1034. Ответов 5
Метки нет (Все метки)

Я пишу приложение для Android-смартфонов. У меня есть "тяжёлая" задача, которую можно разделить на несколько потоков (например, от 2 до 1024). Как, на Ваш взгляд, определить оптимальное количество потоков, в которых нужно выполнять задачу? Как это конкретно сделать в Android-приложении?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2015, 14:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос работа с тяжелыми задачами (Программирование Android):

Игровой и для работы с тяжелыми программами, это 2 разных ноутбука? - Выбор ноутбука
Есть небольшой бюджет, 35000 рублей, приглянулся такой ноутбук...

Помогите с задачами в с++ - C++
1)даны вещественные положительные числа a,b,c. Если существует треугольник со сторонами a,b,c: а)определить его вид (прямоугольный,...

ПОМОГИТЕ С ЗАДАЧАМИ - Delphi
Я не в ладах с DELPHI, поэтому помогите чем можите 1)Известна длина окружности. Найти площадь круга, ограниченного этой окружностью. ...

Книга с задачами - C++
Подскажите хороший задачник по С++

Помогите с задачами! - C++
1.06 Найти площадь равнобедренной трапеции с основаниями a и b и углом при большом осно-вании а. 1.21 Селекционер вывел новый сорт...

Помогите с задачами - Turbo Pascal
вот в увеличенном размере помогите решить задачи. буду благодарен

5
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
07.07.2015, 14:17 #2
Количество потоков, насколько я понимаю (могу и ошибаться) никак не виляет на производительность, если они запущены на одном и том же ядре процессора. Соответственно для подобных задач нужно создать по потоку на ядро. Но опять же повторюсь могу ошибаться, сам серьезно в это не вникал.
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,067
Завершенные тесты: 1
07.07.2015, 16:35 #3
если заглянуть в исходники AsyncTask то в самом начале мы увидим
Java
1
2
3
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
    private static final int CORE_POOL_SIZE = CPU_COUNT + 1;
    private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
надо расшифровывать?

дальше можно увидеть
Java
1
2
 private static final BlockingQueue<Runnable> sPoolWorkQueue =
            new LinkedBlockingQueue<Runnable>(128);
и потом
Java
1
2
3
4
5
6
/**
     * An {@link Executor} that can be used to execute tasks in parallel.
     */
    public static final Executor THREAD_POOL_EXECUTOR
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
                    TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);
Другими словами в пул асинктаска можно напихать 128 задач. Следующая, по-идее, кинет исключение.
То есть это не одновременно работающие задачи, а очередь длиной 128.

Лично я ориентировался на эти данные если бы надо было запускать много-много задач. Запускал бы их по 128 штук пачками и ждал пока все не вернут результат. Ну или по 64 штуки в очереди. А AsyncTask сам разберется сколько потоков стартовать на устройстве одновременно.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
07.07.2015, 19:16  [ТС] #4
Runtime.getRuntime().availableProcessors(); что делает этот код можете пояснить??
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,067
Завершенные тесты: 1
07.07.2015, 19:35 #5
Цитата Сообщение от yura91 Посмотреть сообщение
Runtime.getRuntime().availableProcessors(); что делает этот код можете пояснить??
название переменной CPU_COUNT ни о чем не говорит вообще?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
08.07.2015, 15:03  [ТС] #6
CPU_COUNT CPU это что то связано с процессором COUNT счетчик то есть количество доступных ядер процессора я так понимаю верно ?? Поправьте если заблуждаюсь??
0
08.07.2015, 15:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 15:03
Привет! Вот еще темы с ответами:

Помогите с задачами - C++
Здравствуйте, помогите пожалуйста написать программы. 1)составить программу обмена значениями двух переменных величин а)без введения...

помогите с задачами - C++
помогите пожалуйста решить две задачи по массивам я тут начал а дальше никак:( : 1 задача Даны две действительные квадратные матрицы...

Подсобите с задачами по C++ - C++
П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема. ...

Сайты с задачами - C++
Вот видел недавно сайт, на котором висит задание, ограничение по времени, занятому месту и т.п. На сайт кидаешь программу и он проверяет....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.