Comments 36
На андроиде очень сильно процессорное время жрёт вон тот баннер. Надо проверить на рутованом девайсе с фаерволлом.
+18
P.S. Нет смысла делать аналогичный тест для iOs, так как код компилируется АОТ
+2
Проверил на 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
Результаты тестов LINPACK for Android нестабильны на обоих девайсах, получается разброс примерно 150-220, при этом указывается точность 2.22E-16
+2
8-ми мегапиксельная картинка на 3 Мб в начале статьи — просто огонь :)
Пользователи GPRS интернета тихо плачут в сторонке…
Пользователи GPRS интернета тихо плачут в сторонке…
+3
Samsung Galaxy S3
Mono — 65 (стабильный результат)
Java Single Thread — 41 (стабильный результат)
Java Multi Thread — максимум 138 (скачет от 90 до 138)
Mono — 65 (стабильный результат)
Java Single Thread — 41 (стабильный результат)
Java Multi Thread — максимум 138 (скачет от 90 до 138)
0
Объясните пожалуйста каким образом Mono под Android может работать на том же уровне что и Dalvik виртуальная машина. Насколько я знаю есть только два способа написать что-то под андроид: на java или native(*.so) и тоже вызвать из java. Как же тогда автор статьи может говорить что Mono и Dalvik на одном уровне? Значит есть третий способ писать под андроид?
+3
LG Optimus G Pro (E988)
CPU: 4-ядерный, 1.7 ГГц (Qualcomm Snapdragon™ 600)
Mono: 80.6
Android ST: 286
Android MT: 661
Как-то у Mono плоховато с ядроюзабельностью. Попробуйте собрать с TPL.
CPU: 4-ядерный, 1.7 ГГц (Qualcomm Snapdragon™ 600)
Mono: 80.6
Android ST: 286
Android MT: 661
Как-то у Mono плоховато с ядроюзабельностью. Попробуйте собрать с TPL.
0
Хм на ноут3 не ставится моно версия.
В обычном линпаке — 750-860 в мультитреде
Точность — 2,22 показывает
В обычном линпаке — 750-860 в мультитреде
Точность — 2,22 показывает
0
Acer Iconia Tab A501
dalvik single: 37.18
dalvik multi: 62.1
mono: 52.17 — 56.57 (скачет)
dalvik single: 37.18
dalvik multi: 62.1
mono: 52.17 — 56.57 (скачет)
0
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
CPU: MT6589, 4 ядра х 1,2 ГГц
Linpack for Android Single Thread: 62.844
Linpack for Android Multi-Thread: 190.584
Mono Linpack: 49.8120
0
UFO just landed and posted this here
UFO just landed and posted this here
Код который я использую есть прямой порт Linpack.java, используемой в Linpack for Android. Это необходимо для сравнения производительности двух VM. На мой взгляд чем меньше различий, тем точнее тест (хотя я например не знаю каким образом там реализован многопоточный тест), однако ваша оптимизация сама по себе интересна.
+1
извените за глупый вопрос, сама «моно машина» (ну чтото вроде JVM) встроенна в андроид? или идет внутри аппликейшена который написан на mono с#? где можно про это почитать.
+4
UFO just landed and posted this here
>Тест производительности LINPACK это метод оценки производительности путем оценки скорости выполнения операций с плавающей точкой вычислительной системы.
и что вы тестировали? Работу JIT компилятора в области простой арифметики и математику процессора? Практического толку от такого теста 0, видно что вы маловато знаете о виртуальных машинах и что вообще нужно тестировать.
и что вы тестировали? Работу JIT компилятора в области простой арифметики и математику процессора? Практического толку от такого теста 0, видно что вы маловато знаете о виртуальных машинах и что вообще нужно тестировать.
+1
Тестировал я, как очевидно, разность в производительности разных VM. Естественно для этого нужно какое-то мерило, и LINPACK тут вполне подходит.
Кстати, а какой тест предложите вы? Сначала я хотел добавить whetstone, а теперь подумываю об одном из олденовских тестов, например bisort или health. Хорошие, мощные тесты.
Кстати, а какой тест предложите вы? Сначала я хотел добавить whetstone, а теперь подумываю об одном из олденовских тестов, например bisort или health. Хорошие, мощные тесты.
-1
Протестировали бы лучше плавность скрола таблиц со сложными ячейками — вот что действительно волнует пользователей.
+1
вы по сути тестируете производительность железа а не скорость работы виртуальной машины.
нужно тестировать и как работает сборщик мусора, перегрузка методов, всё типичное что делает виртуальная машина выполняя реальную программу (умеет ли она делать агрессивные оптимизации?). Скомпилировать 3+2 может самый примитивный JIT компилятор. А вот по остальным оптимизациям и определяется лучшая VM.
написание хорошего теста долгая и сложная работа, большинство людей не могут даже правильно измерить работу разных кусков кода под одной и той же JVM.
Если бы мне нужно было делать подобное тестирование, то я бы
1) нашёл типичное приложение, разобрался бы что от него требуется (как минимум пиковая производительность или низкая латентность), изучил бы структуру и архитектуру, накатал бы тест приложение похожее на образцовое.
LINPACK — почему по вашему такой какой есть, он измеряет то что обычно делают на суперкомпьютерах — задачи численной математики на _кластерах_.
2) нагуглил бы какие оптимизации делают разные виртуальные машины, что тоже повлияло бы на код теста.
3) нагуглил бы как правильно проводить тестирование: сколько раз запускать, как долго должен работать тест, следил бы как работает сборщик мусора, когда происходит JIT компиляция, какой разброс результатов.
В общем это не задача на один вечер.
нужно тестировать и как работает сборщик мусора, перегрузка методов, всё типичное что делает виртуальная машина выполняя реальную программу (умеет ли она делать агрессивные оптимизации?). Скомпилировать 3+2 может самый примитивный JIT компилятор. А вот по остальным оптимизациям и определяется лучшая VM.
написание хорошего теста долгая и сложная работа, большинство людей не могут даже правильно измерить работу разных кусков кода под одной и той же JVM.
Если бы мне нужно было делать подобное тестирование, то я бы
1) нашёл типичное приложение, разобрался бы что от него требуется (как минимум пиковая производительность или низкая латентность), изучил бы структуру и архитектуру, накатал бы тест приложение похожее на образцовое.
LINPACK — почему по вашему такой какой есть, он измеряет то что обычно делают на суперкомпьютерах — задачи численной математики на _кластерах_.
2) нагуглил бы какие оптимизации делают разные виртуальные машины, что тоже повлияло бы на код теста.
3) нагуглил бы как правильно проводить тестирование: сколько раз запускать, как долго должен работать тест, следил бы как работает сборщик мусора, когда происходит JIT компиляция, какой разброс результатов.
В общем это не задача на один вечер.
+3
Согласен с вашим комментарием. Самое важное для разработчиков — будут ли Xamarin-приложения столь же отзывчивыми, как нативные. Флопсы здесь ни при чем.
+1
С этого места поподробней, всё-таки выгружать фоновые приложения из памяти Android любит.
0
Тот же тест, на который я дал линк в начале, замерил задержку старта, получилось около пол секунды разницы.
forums.xamarin.com/discussion/5314/xamarin-load-time
forums.xamarin.com/discussion/5314/xamarin-load-time
+1
А. Ну пол секунды — это не критично…
0
Когда я писал IM на конкурс Дурова я был вынужден добавить splash-screen перед стартом программы, т.к. грузилась она хоть и быстро (0.7-1.4 секунды) но и визуально заметно.
+1
Only those users with full accounts are able to leave comments. Log in, please.
Сравнение производительности Xamarin (monodroid) и Java (DalvikVM) на Android устройствах