Проверил на Nexus 4 (Qualcomm Snapdragon S4 Pro APQ8064, 4 ядра, 1500 МГц) и Samsung Galaxy Note 8.0 (Exynos 4412, 4 ядра, 1600 МГц) — Mono проигрывает в обоих случаях в 1,5-2 раза.
Результаты тестов LINPACK for Android нестабильны на обоих девайсах, получается разброс примерно 150-220, при этом указывается точность 2.22E-16
Интересно. Могу предположить что в Mono по умолчанию не используются все 4 ядра. Никакого принудительного распараллеливания я не писал, а как ведет себя Task внутри предсказать сложно. Думаю, использовав возможности TPL и Parallel.For можно добиться более лучшего результата.
Объясните пожалуйста каким образом Mono под Android может работать на том же уровне что и Dalvik виртуальная машина. Насколько я знаю есть только два способа написать что-то под андроид: на java или native(*.so) и тоже вызвать из java. Как же тогда автор статьи может говорить что Mono и Dalvik на одном уровне? Значит есть третий способ писать под андроид?
Код который я использую есть прямой порт Linpack.java, используемой в Linpack for Android. Это необходимо для сравнения производительности двух VM. На мой взгляд чем меньше различий, тем точнее тест (хотя я например не знаю каким образом там реализован многопоточный тест), однако ваша оптимизация сама по себе интересна.
извените за глупый вопрос, сама «моно машина» (ну чтото вроде JVM) встроенна в андроид? или идет внутри аппликейшена который написан на mono с#? где можно про это почитать.
Тестировал я, как очевидно, разность в производительности разных VM. Естественно для этого нужно какое-то мерило, и LINPACK тут вполне подходит.
Кстати, а какой тест предложите вы? Сначала я хотел добавить whetstone, а теперь подумываю об одном из олденовских тестов, например bisort или health. Хорошие, мощные тесты.
самый главный тормоз в прокрутке в Android — метод viewForItem, который возвращает следующую ячейку. Т.е. все упирается в его быстродействие — количество оберток вокруг него.
Согласен с вашим комментарием. Самое важное для разработчиков — будут ли Xamarin-приложения столь же отзывчивыми, как нативные. Флопсы здесь ни при чем.
Когда я писал IM на конкурс Дурова я был вынужден добавить splash-screen перед стартом программы, т.к. грузилась она хоть и быстро (0.7-1.4 секунды) но и визуально заметно.
Сравнение производительности Xamarin (monodroid) и Java (DalvikVM) на Android устройствах