Как стать автором
Обновить

Комментарии 36

На андроиде очень сильно процессорное время жрёт вон тот баннер. Надо проверить на рутованом девайсе с фаерволлом.
Да можно просто интернет отключить.
P.S. Нет смысла делать аналогичный тест для iOs, так как код компилируется АОТ
Проверил на 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 можно добиться более лучшего результата.
8-ми мегапиксельная картинка на 3 Мб в начале статьи — просто огонь :)
Пользователи GPRS интернета тихо плачут в сторонке…
я очевидно зря понадеялся на
сервис Habrastorage.org — он сразу уменьшает большие картинки до нужного размера и позволяет выдерживать высокие нагрузки.

Пережал и перезалил картинку.
Samsung Galaxy S3
Mono — 65 (стабильный результат)
Java Single Thread — 41 (стабильный результат)
Java Multi Thread — максимум 138 (скачет от 90 до 138)
Объясните пожалуйста каким образом Mono под Android может работать на том же уровне что и Dalvik виртуальная машина. Насколько я знаю есть только два способа написать что-то под андроид: на java или native(*.so) и тоже вызвать из java. Как же тогда автор статьи может говорить что Mono и Dalvik на одном уровне? Значит есть третий способ писать под андроид?
Есть. В основе android лежит linux и Mono как и Dalvik работает поверх ядра линукса.
image
подробнее можно почитать тут
LG Optimus G Pro (E988)
CPU: 4-ядерный, 1.7 ГГц (Qualcomm Snapdragon™ 600)

Mono: 80.6
Android ST: 286
Android MT: 661

Как-то у Mono плоховато с ядроюзабельностью. Попробуйте собрать с TPL.
Хм на ноут3 не ставится моно версия.
В обычном линпаке — 750-860 в мультитреде
Точность — 2,22 показывает
update:
Поставился
MonoLP — 200-240
Precision 2.22
Acer Iconia Tab A501

dalvik single: 37.18
dalvik multi: 62.1
mono: 52.17 — 56.57 (скачет)
Lenovo P780
CPU: MT6589, 4 ядра х 1,2 ГГц

Linpack for Android Single Thread: 62.844
Linpack for Android Multi-Thread: 190.584
Mono Linpack: 49.8120
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Код который я использую есть прямой порт Linpack.java, используемой в Linpack for Android. Это необходимо для сравнения производительности двух VM. На мой взгляд чем меньше различий, тем точнее тест (хотя я например не знаю каким образом там реализован многопоточный тест), однако ваша оптимизация сама по себе интересна.
извените за глупый вопрос, сама «моно машина» (ну чтото вроде JVM) встроенна в андроид? или идет внутри аппликейшена который написан на mono с#? где можно про это почитать.
НЛО прилетело и опубликовало эту надпись здесь
Пушните все изменения?
И какая у вас спецификация, что дает 1.6 GFLOPS? У меня на Phenom II 945 X4 3Ghz больше 0.4 GFLOPS не выдает.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Тестировал я, как очевидно, разность в производительности разных VM. Естественно для этого нужно какое-то мерило, и LINPACK тут вполне подходит.

Кстати, а какой тест предложите вы? Сначала я хотел добавить whetstone, а теперь подумываю об одном из олденовских тестов, например bisort или health. Хорошие, мощные тесты.
Протестировали бы лучше плавность скрола таблиц со сложными ячейками — вот что действительно волнует пользователей.
скроллинг и там и там одинаковый, так как моно пользуется тем же нативным контролем и просто вызывает его через обертку
самый главный тормоз в прокрутке в Android — метод viewForItem, который возвращает следующую ячейку. Т.е. все упирается в его быстродействие — количество оберток вокруг него.
НЛО прилетело и опубликовало эту надпись здесь
Согласен с вашим комментарием. Самое важное для разработчиков — будут ли Xamarin-приложения столь же отзывчивыми, как нативные. Флопсы здесь ни при чем.
Естественно. Видео

Единственное место где заметна разница в производительности — холодный старт приложения. C# сборки надо еще загрузить…
С этого места поподробней, всё-таки выгружать фоновые приложения из памяти Android любит.
Тот же тест, на который я дал линк в начале, замерил задержку старта, получилось около пол секунды разницы.
forums.xamarin.com/discussion/5314/xamarin-load-time
А. Ну пол секунды — это не критично…
Когда я писал IM на конкурс Дурова я был вынужден добавить splash-screen перед стартом программы, т.к. грузилась она хоть и быстро (0.7-1.4 секунды) но и визуально заметно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации