Многоядерный Android

Я запустил простой параллельный алгоритм, рисующий набор Мандельброта для тестирования параллельных вычислений на Nexus 7 (ядра Tegra 3, 4 + 1). После запуска несколько раз я получаю 1,5 секунды для последовательного и 1,0 для параллельного, но параллельное и последовательное очень близко подходят друг к другу за 1,3 секунды.

Квадрат имеет размер 700x700 пикселей, и код Мандельброта, который я использую, взят из

http://rosettacode.org/wiki/Mandelbrot_set#Java

Параллельная реализация запускает две половины Мандельброта, как это

    public void mandelbrotParallel() {
    Thread t1 = new Thread(new Runnable() {
        public void run() {
            mandelbrotOne();
        }
    });
    Thread t2 = new Thread(new Runnable() {
        public void run() {
            mandelbrotTwo();
        }
    });
    t1.start();
    t2.start();
    try {
        t1.join();
        t2.join();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mHandler.post(new Runnable() {
        public void run() {
            v.setBmp(bmp);
            v.invalidate();
        }
    });
}

Ранее я запускал простое векторное сложение и нашел похожие анекдотические результаты (без научной строгости). Поэтому мне интересно, нужно ли делать что-то особенное, чтобы заставить Android запускать несколько ядер, чтобы выполнить задачу.

Основываясь на быстрых разговорах с Google, может случиться так, что ядра бездействуют и ждут, пока вычисления будут действительно долго работать (несколько секунд), прежде чем ядра будут включены ... Это правда? Если да, то есть ли вызовы API из Java (без JNI), которые можно сделать, чтобы превентивно разбудить ядра?

Ответы на вопрос(2)

Ваш ответ на вопрос