Сообщение Re[39]: А что мешает заменить JS? от 28.03.2017 7:15
Изменено 28.03.2017 7:29 Serginio1
_>Здравствуйте, Serginio1, Вы писали:
S>>Ты кстати с Net Native сравнивал?
_>Нет, у меня не установлена инфраструктура под него (собственно я даже не в курсе что там требуется установить, чтобы собрать соответствующее приложение). ) Я и .net то не ставил специально, просто он у всех пользователей винды присутствует по умолчанию. )))
Ну вот здесь пишут http://our.componentone.com/2017/03/09/uwp-performance-and-net-native-compilation/
Что в VS 2017 порядка 600 исправлений и типа существенно повысили производительность на некоторых сценариях.
_>Здравствуйте, Serginio1, Вы писали:
S>>Ты кстати с Net Native сравнивал?
_>Нет, у меня не установлена инфраструктура под него (собственно я даже не в курсе что там требуется установить, чтобы собрать соответствующее приложение). ) Я и .net то не ставил специально, просто он у всех пользователей винды присутствует по умолчанию. )))
Ну вот здесь пишут http://our.componentone.com/2017/03/09/uwp-performance-and-net-native-compilation/
Что в VS 2017 порядка 600 исправлений и типа существенно повысили производительность на некоторых сценариях.
Кстати интересная статья https://dzone.com/articles/net-native-performance-and
Там по сути твой любимый тест
MatrixMultiplication — Выполняет наивное O (n ^ 3) умножение двух целых матриц. Есть две версии этого кода — для прямоугольных (многомерных) и неровных массивов. Хороший оптимизирующий компилятор может выполнять здесь несколько оптимизаций, таких как замена циклов, векторизация, FMA и т. Д.
Рабочий стол JIT RectangularMatrixMultiplication — 50.30814ms
.NET Native RectangularMatrix Multiplication — 187.3474ms
Рабочий стол JIT JaggedMatrixMultiplication — 33.11678ms
.NET Native JaggedMatrixMultiplication — 33.08566ms
C ++ Matrix Multiplication — 21.11234ms
Мандельброт — вычисляет множество Мандельброта в заданных измерениях. Это контрольный показатель, который не имеет доступа к большому количеству памяти, но работает с узким циклом с умножениями и дополнениями, которые могут извлечь выгоду из векторизации, интеллектуального распределения регистров, переопределения команд и других соображений, которые использует оптимизирующий компилятор. Из всех приведенных выше показателей это, пожалуй, самый реалистичный с точки зрения количества и качества кода.
Обои для рабочего JIT Mandelbrot — 32.18214ms
.NET Native Mandelbrot — 46.48744ms
C ++ Mandelbrot — 15.26277ms
Полученные результаты довольно убедительны. На данный момент .NET Native не использует никаких оптимизаций супер-умного компилятора, которые приводят его производительность в соответствие с кодом на C ++. В некоторых случаях он даже генерирует код, который не подпадает под JIT рабочего стола (в частности, прямоугольные массивы и тесты Mandelbrot). Важно помнить, что это все еще предварительный просмотр, и я буду очень рад повторить эти измерения, когда будет выпущена обновленная версия .NET Native. Я знаю, что команда .NET Native активно работает над оптимизацией компилятора.
Пока C++ в сложных для .Net Jita алгоритмах проигрывает C++ в 2 раза. .Net Native пока сырой