Если честно, по количеству "прогревочных" запусков - не указал количество, по той причине что разложил все телефоны и запускал тест столько раз, насколько хватило терпения - думаю, не больше 50. Интересно что время выполнения в JVW продолжает плавать, в то время как С++ стабилен, только в режиме полета работает быстрее. Допускаю, что dex2aot, со временем, оптимизирует все до "небывалых" высот, но пока это только предположение.
Обязательно почитаю про бенчмарки, спасибо, пробелов в знаниях тем больше, чем больше я знаю)
По поводу учебы - секрета нет, ТУСУР программная инженерия,4 курс - удаленка.
Котлин прекрасен, тут не о чем говорить, просто такие понятия, как "быстрый" или "медленный" не очень раскрывают тему, интересно было получить хоть какой-то измеримый результат, чтобы можно было принимать решения о необходимости подключения native в некоторых случаях.
Да, в этом изолированном случае, я точно знал сколько будет элементов в массиве, и понимал что точно не хватит тех 300 тысяч double, которые резервируются в конструкторе, но ведь в те же условия был поставлен алгоритм на JVM, намеренно не подгонял размер вектора под количество, чтобы вектор справлялся с этой проблемой своими силами.
По поводу работы С++ на стэке - насколько мне известно, аллокатор памяти std::vector выделяет память в куче, что касается временных переменных Complex, тестировал вариант с new + delete - не особо влияет на результат.
Эксперимент как раз и был задуман как сравнение работы алгоритма с кучей мелких объектов, которые нужно постоянно создавать на куче и упаковывать в массив. Я осознаю, что если очень постараться, можно оптимизировать код Kotlin, но задумка была сравнить производительность "в лоб".
По поводу Kotlin Native - согласен полностью, очень интересно, были такие мысли, но пока не дошло до дела.
Если честно, по количеству "прогревочных" запусков - не указал количество, по той причине что разложил все телефоны и запускал тест столько раз, насколько хватило терпения - думаю, не больше 50. Интересно что время выполнения в JVW продолжает плавать, в то время как С++ стабилен, только в режиме полета работает быстрее. Допускаю, что dex2aot, со временем, оптимизирует все до "небывалых" высот, но пока это только предположение.
Обязательно почитаю про бенчмарки, спасибо, пробелов в знаниях тем больше, чем больше я знаю)
По поводу учебы - секрета нет, ТУСУР программная инженерия,4 курс - удаленка.
Котлин прекрасен, тут не о чем говорить, просто такие понятия, как "быстрый" или "медленный" не очень раскрывают тему, интересно было получить хоть какой-то измеримый результат, чтобы можно было принимать решения о необходимости подключения native в некоторых случаях.
Да, в этом изолированном случае, я точно знал сколько будет элементов в массиве, и понимал что точно не хватит тех 300 тысяч double, которые резервируются в конструкторе, но ведь в те же условия был поставлен алгоритм на JVM, намеренно не подгонял размер вектора под количество, чтобы вектор справлялся с этой проблемой своими силами.
По поводу работы С++ на стэке - насколько мне известно, аллокатор памяти std::vector выделяет память в куче, что касается временных переменных Complex, тестировал вариант с new + delete - не особо влияет на результат.
Эксперимент как раз и был задуман как сравнение работы алгоритма с кучей мелких объектов, которые нужно постоянно создавать на куче и упаковывать в массив. Я осознаю, что если очень постараться, можно оптимизировать код Kotlin, но задумка была сравнить производительность "в лоб".
По поводу Kotlin Native - согласен полностью, очень интересно, были такие мысли, но пока не дошло до дела.
Полностью согласен, можно придумать много интересных тестов, возможно займусь этим вопросом)
Спасибо, я рад, что кому-то это было интересно!
Спасибо!
C++ 65.8 МБ в эмуляторе
Kotlin в пике 97,3 МБ в эмуляторе
Похоже, мы можем наблюдать сборку мусора в прямом эфире в виде этой пилы.
Добавил папку apk
https://github.com/3036662/JNIvsKotlin/blob/master/apk/app-release.apk
APK есть готовый, но в силу неопытности не знаю как сюда приложить, сейчас добавлю на Github