Форум программистов, компьютерный форум CyberForum.ru

Мой упрощенный алгоритм выполняется дольше алгоритма Google - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android AndroidHttpClient http://www.cyberforum.ru/android-dev/thread1367553.html
Привет всем. Нужна помощь. Нужно создать метод, который возвращает HttpClient c сохранением старых кук и который может отдавать заголовки переадресации. Моя реализация работает, но нужно использовать дефолтный httpClient в андроид public CloseableHttpClient getHttpClient() { SSLContext sslContext = SSLContexts.createSystemDefault(); SSLConnectionSocketFactory...
Android Периодическое обновление ListView Привет всем! Есть задача, вывести на экран список, данные берутся с сервера, а потом с какой то периодичностью обновлять его с сервера. Список есть, при создании активити он загружается и отображается: GSMGPSSender.getList();//Это обновление данных в базе с сервера // формируем столбцы сопоставления String from = new String { DB.COLUMN_SLCT, DB.COLUMN_IMG,... http://www.cyberforum.ru/android-dev/thread1367500.html
CursorLoader+SQLite Android
Добрый день! подскажите пожалуйста какого вида должны быть следующие строки в которых использовался Cursor, если пользоваться CursorLoader? для cursor.requery разобрался это - getSupportLoaderManager().getLoader(0).forceLoad(); а как в остальном быть, получить id пункта в onItemClick, задать текст выбранной строки, поставить курсор в нужный позишн(вызовом контекстного меню на item'е)? ...
Android Андроид приложение, вытащить информацию из refferer с appstore
Здравствуйте, какможно вытащить информацию из урла который на аппсторе когда пользователь приходит туда т.е грубо говоря надо следующее человек пришел на аппстор у него там высветился определенный урл, после скачивания приложения и запуске надо вывести этот урл намэкран как такое реализовать? что надо прописать в oncreate?
Android Автокликер по событию http://www.cyberforum.ru/android-dev/thread1367348.html
Возможно ли написать программу со следующими функциями- Есть некая программа ( не игра). Периодически данная программа выдает некое сообщение ( в программе вместо текущих данных показываются 2 кнопки и информация) сопровождающееся звуковым сигналом. Необходимо нажимать по одной из кнопок. нужно автоматически нажимать по этой кнопкой. Реально ли сделать такую вещь под андроид? ( вопрос про...
Android Gps speed Всем привет! есть простая задача получить текущюю скорость. Нагуглил метод getSpeed(), но так и не смог понять как с ним работать. На экране есть кнопка button и текст textView10. package qwerty.qaz; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; подробнее

Показать сообщение отдельно
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589

Мой упрощенный алгоритм выполняется дольше алгоритма Google - Android

03.02.2015, 16:47. Просмотров 234. Ответов 0
Метки (Все метки)

Здравствуйте!
Возник вопрос по скорости выполнения... Я разрабатываю 2D-движок, в принципе работает быстро, но хочется убрать лишние операции, которые не нужны для 2D все равно.
Поэтому код функции Matrix.translateM
Java
1
2
3
4
5
6
7
8
public static void translateM(
            float[] m, int mOffset,
            float x, float y, float z) {
        for (int i=0 ; i<4 ; i++) {
            int mi = mOffset + i;
            m[12 + mi] += m[mi] * x + m[4 + mi] * y + m[8 + mi] * z;
        }
    }
Решил заменить своей, заточенной чисто под перемещение в плоскости:
Java
1
2
3
4
5
6
public static void translate(float[] m, float x, float y) {
        m[12] += m[0] * x + m[4] * y;
        m[13] += m[1] * x + m[5] * y;
        m[14] += m[2] * x + m[6] * y;
        m[15] += m[3] * x + m[7] * y;
    }
Далее решил сравнить скорость выполнения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
long startTime;
        long delta;
        for(int i = 0; i < 10; ++i) {
            startTime = System.nanoTime();
            EasyMatrix.translate(mtrxView, 50f, 50f);
            delta = System.nanoTime() - startTime;
            Log.d(TAG, "Easy matrix time: " + delta);
            startTime = System.nanoTime();
            Matrix.translateM(mtrxView, 0, 50f, 50f, 0f);
            delta = System.nanoTime() - startTime;
            Log.d(TAG, "Android matrix time: " + delta);
        }
Получаю такой вывод:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 94426
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6425
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 7263
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 268470
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6704
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6705
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6425
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6146
02-03 11:19:51.368    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6146
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6425
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 9778
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6704
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6984
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6984
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 7543
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 7264
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6146
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6425
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Easy matrix time: 6146
02-03 11:19:51.369    2463-2481/com.contedevel.lastlegend D/EasyRenderer﹕ Android matrix time: 6705


Ну, первое отличие при запуске я еще могу понять... Но, почему далее моя функция проигрывает по времени выполнения? Алгоритм же проще на порядок... Или я неправильно измеряю время выполнения?
Буду очень признателен за подробное объяснение!
P.S. Цикл взял, чтобы среднюю разницу определить.

Добавлено через 2 часа 15 минут
Такой вариант в среднем выполняется быстрее, чем без цикла, что мне тоже не понятно...
Java
1
2
3
4
5
public static void translate(float[] m, float x, float y) {
        for(int i = 0; i < 4; ++i) {
            m[12 + i] += m[i]*x + m[4 + i] * y;
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru