Среда Мы будем писать на MacOS, поскольку кармическая коала еще «пробуждается».
Eclipse Galileo, Android SDK 1.6r1 и NDK 1.6r1 установлены и настроены.
Мы будем писать на NDK 1.5, потому что доступен только HTC Magic (32A).
Это тестирование было написано с целью «проверить почву» перед портированием игры с iPhone на Android. Тестирование В качестве тестов были взяты следующие варианты:
- Быстрая сортировка
- Сортировка оболочки
- Переворот массива
- Вызов метода
- Метод половинного деления
Другое дело — большие объемы данных и большое количество вызовов «методов».
Для проверки рекурсии в сочетании с большим объемом данных использовалась быстрая сортировка, а для устранения рекурсии применялся алгоритм Шелла.
Для проверки производительности работы конкретно с данными мы используем обращение массива.
Чтобы оценить стоимость вызова «метода» JNI и Java, давайте вызовем фиктивные методы 10 000 раз.
Для сортировки мы используем заранее сгенерированный массив int из 10 000 элементов.
Результаты получены для симулятора (2,4ГГц Intel Core 2 Duo), HTC Magic (32A, 1.5, core 2.6.29+bfs), а также для iPhone3G (3.1).
Все методы тестирования были написаны на чистом C.
Результаты
Симулятор
- | КО | SS | Менять | Дивизион 2 | Пустой |
---|---|---|---|---|---|
JNI(сим) | 10590 | 253735 | 699 | 210339 | 13895 |
ЯВА (сим) | 100650 | 4573416 | 7861 | 334483 | 7745 |
Сим% | 89,48 | 94,45 | 91,11 | 37,12 | -79,41 |
HTC Magic (32A 1.5, 2.6.29-myhero-bfs)
- | КО | SS | Менять | Дивизион 2 | Пустой |
---|---|---|---|---|---|
JNI | 7469 | 117139 | 880 | 109197 | 8885 |
ДЖАВА | 63569 | 2902912 | 5959 | 213278 | 5193 |
% | 88,25 | 95,96 | 85,23 | 48,8 | -71,1 |
Каждый тест запускался 30 раз, а результаты усреднялись.
Первый результат был пропущен, так как не соответствовал общему показателю, видимо, из-за специфики Java. Как видно из результатов, NDK очень эффективен при работе с большими объемами данных, также наблюдается большой прирост при переносе «математики» в JNI, единственный минус — «цена» вызова.
Симулятор
HTC Магия
А теперь сравним с айфоном, чудес ждать не стоит.
айфон
- | КО | SS | Менять | Дивизион 2 | Пустой |
---|---|---|---|---|---|
HTC Магия JNI | 7469 | 117139 | 880 | 109197 | 8885 |
айфон | 33531 | 1310358 | 1820 | 22405 | 769 |
% | 77,73 | 91,06 | 51,65 | -387,38 | -1055,4 |
Пустые методы также удалены, поскольку компилятор iPhone хорошо оптимизирует «такой код».
Результаты меня просто поразили.
Единственная потеря — в математике и оптимизации кода.
Думаю с выходом новых устройств первая проблема будет решена.
Исходники тестов для айфон И Андроид .
P.S. Как только появится возможность установить прошивку 1.6 на телефон, сравню OpenGL. Теги: #Android #sdk #NDK #iphone #разработка Android
-
Работаем Удаленно. Особенности И Ограничения
19 Oct, 24 -
Совмещение Ip-Адресов — Freebsd
19 Oct, 24 -
Японя, Упячка И Т.п. "Артефакты"...
19 Oct, 24 -
Скрытые Цепи Маркова, Алгоритм Баума-Уэлша
19 Oct, 24