Сообщение Re[73]: Реальная производительность WebAssembly? от 28.10.2017 11:35
Изменено 28.10.2017 12:20 Pauel
Re[73]: Реальная производительность WebAssembly?
Здравствуйте, CoderMonkey, Вы писали:
I>> Тест показывает только узкое место. Если JS переписать инициализацию на энергичный цикл, что будет, ась ? Попробуй на досуге.
CM>А, ну замечательно. "Это в JS тормозит, мы это измерять не будем. То в JS тормозит, мы его измерять тоже не будем."
А что, по твоему, мы замерили в инициализации в JS ? Как раз то, что тормозит.
А если поменять ленивую часть, на энергичную, получим гораздо более другой расклад. Следовательно ленивость и есть узкое место в JS.
I>>1. JS выдает очень большой разброс в показаниях.
I>> Ты ведь видел это, не так ли ?
CM>Есть одна небольшая проблема. Из моей серии замеров, даже минимальное число примерно соответствует твоему — но только это на моем железе, которое в два раза быстрее твоего. Нестыковочка.
А ты не пробовал дочитать до конца, прежде чем срывать покровы ?
I>> 1.5с — как думаешь, какое число я взял из __серии__ замеров ?
CM>Минимальное, конечно же? Я вижу, без мухлежа ты просто жить не можешь.
Минимальное, потому что в JS, в отличие от C#, GC слишком сильно вмешивается в работу основного потока. И много других фокусов происходит, которых в C# нет.
I>>2. _точная_ версия твоего JS-рантайма какая ? А у меня ? Надеюсь, ты помнишь, что речь была про эксперимернтальный рантайм ?
CM>Да-да, я помню. А какой чудак вообще опирается на данные экспериментальных версий? Стандартный выбор нормального человека — это последний релиз.
Итого — по существу возражений нет ?
I>>На стандартном числа совсем другие, но расклад тот же — инициализация в пользу C#, сортировка — в пользу JS.
CM>Только если в JS версии подмухлевать с форматтером и компарером, как мы уже обнаружили. А если не мухлевать, то JS сливает в обеих половинах
теста.
До кучи — .Net Jit более качественный, чем JS. А это значит, что разница в железе на JS видна слабее. Что вобщем очевидно. Кроме того, JS сам по себе дает больше промахов по кешу, т.е. влияние проца и кеша будет меньше.
Есть еще один нюанс — версии рантаймов .Net у нас разные. Здесь тоже есть отличия. А это значит, что железо, возможно, отличается не в двое, а меньше. Это тоже нужно учитывать.
Напоследок — я то пофиксил и сортировку в C#, а ты замеряешь свой "алгоритм" у которого всего лишь асимптотика такая же, а абсолютно число компараций отличается. Хы-хы.
I>> Тест показывает только узкое место. Если JS переписать инициализацию на энергичный цикл, что будет, ась ? Попробуй на досуге.
CM>А, ну замечательно. "Это в JS тормозит, мы это измерять не будем. То в JS тормозит, мы его измерять тоже не будем."
А что, по твоему, мы замерили в инициализации в JS ? Как раз то, что тормозит.
А если поменять ленивую часть, на энергичную, получим гораздо более другой расклад. Следовательно ленивость и есть узкое место в JS.
I>>1. JS выдает очень большой разброс в показаниях.
I>> Ты ведь видел это, не так ли ?
CM>Есть одна небольшая проблема. Из моей серии замеров, даже минимальное число примерно соответствует твоему — но только это на моем железе, которое в два раза быстрее твоего. Нестыковочка.
А ты не пробовал дочитать до конца, прежде чем срывать покровы ?
I>> 1.5с — как думаешь, какое число я взял из __серии__ замеров ?
CM>Минимальное, конечно же? Я вижу, без мухлежа ты просто жить не можешь.
Минимальное, потому что в JS, в отличие от C#, GC слишком сильно вмешивается в работу основного потока. И много других фокусов происходит, которых в C# нет.
I>>2. _точная_ версия твоего JS-рантайма какая ? А у меня ? Надеюсь, ты помнишь, что речь была про эксперимернтальный рантайм ?
CM>Да-да, я помню. А какой чудак вообще опирается на данные экспериментальных версий? Стандартный выбор нормального человека — это последний релиз.
Итого — по существу возражений нет ?
I>>На стандартном числа совсем другие, но расклад тот же — инициализация в пользу C#, сортировка — в пользу JS.
CM>Только если в JS версии подмухлевать с форматтером и компарером, как мы уже обнаружили. А если не мухлевать, то JS сливает в обеих половинах
теста.
До кучи — .Net Jit более качественный, чем JS. А это значит, что разница в железе на JS видна слабее. Что вобщем очевидно. Кроме того, JS сам по себе дает больше промахов по кешу, т.е. влияние проца и кеша будет меньше.
Есть еще один нюанс — версии рантаймов .Net у нас разные. Здесь тоже есть отличия. А это значит, что железо, возможно, отличается не в двое, а меньше. Это тоже нужно учитывать.
Напоследок — я то пофиксил и сортировку в C#, а ты замеряешь свой "алгоритм" у которого всего лишь асимптотика такая же, а абсолютно число компараций отличается. Хы-хы.
Re[73]: Реальная производительность WebAssembly?
Здравствуйте, CoderMonkey, Вы писали:
I>> Тест показывает только узкое место. Если JS переписать инициализацию на энергичный цикл, что будет, ась ? Попробуй на досуге.
CM>А, ну замечательно. "Это в JS тормозит, мы это измерять не будем. То в JS тормозит, мы его измерять тоже не будем."
А что, по твоему, мы замерили в инициализации в JS ? Как раз то, что тормозит.
А если поменять ленивую часть, на энергичную, получим гораздо более другой расклад. Следовательно ленивость и есть узкое место в JS.
Кстати говоря, именно эти тормоза (yield) уже пофиксили:
Node 8.8.1. Только волосы не рви на себе — это еще одно железо, игровой ноутбук трехлетней давности.
I>>1. JS выдает очень большой разброс в показаниях.
I>> Ты ведь видел это, не так ли ?
CM>Есть одна небольшая проблема. Из моей серии замеров, даже минимальное число примерно соответствует твоему — но только это на моем железе, которое в два раза быстрее твоего. Нестыковочка.
А ты не пробовал дочитать до конца, прежде чем срывать покровы ?
I>> 1.5с — как думаешь, какое число я взял из __серии__ замеров ?
CM>Минимальное, конечно же? Я вижу, без мухлежа ты просто жить не можешь.
Минимальное, потому что в JS, в отличие от C#, GC слишком сильно вмешивается в работу основного потока. И много других фокусов происходит, которых в C# нет.
I>>2. _точная_ версия твоего JS-рантайма какая ? А у меня ? Надеюсь, ты помнишь, что речь была про эксперимернтальный рантайм ?
CM>Да-да, я помню. А какой чудак вообще опирается на данные экспериментальных версий? Стандартный выбор нормального человека — это последний релиз.
Итого — по существу возражений нет ?
I>>На стандартном числа совсем другие, но расклад тот же — инициализация в пользу C#, сортировка — в пользу JS.
CM>Только если в JS версии подмухлевать с форматтером и компарером, как мы уже обнаружили. А если не мухлевать, то JS сливает в обеих половинах
теста.
До кучи — .Net Jit более качественный, чем JS. А это значит, что разница в железе на JS видна слабее. Что вобщем очевидно. Кроме того, JS сам по себе дает больше промахов по кешу, т.е. влияние проца и кеша будет меньше.
Есть еще один нюанс — версии рантаймов .Net у нас разные. Здесь тоже есть отличия. А это значит, что железо, возможно, отличается не в двое, а меньше. Это тоже нужно учитывать.
Напоследок — я то пофиксил и сортировку в C#, а ты замеряешь свой "алгоритм" у которого всего лишь асимптотика такая же, а абсолютно число компараций отличается. Хы-хы.
I>> Тест показывает только узкое место. Если JS переписать инициализацию на энергичный цикл, что будет, ась ? Попробуй на досуге.
CM>А, ну замечательно. "Это в JS тормозит, мы это измерять не будем. То в JS тормозит, мы его измерять тоже не будем."
А что, по твоему, мы замерили в инициализации в JS ? Как раз то, что тормозит.
А если поменять ленивую часть, на энергичную, получим гораздо более другой расклад. Следовательно ленивость и есть узкое место в JS.
Кстати говоря, именно эти тормоза (yield) уже пофиксили:
Init, miliseconds: 1598
Sort miliseconds: 1573
Node 8.8.1. Только волосы не рви на себе — это еще одно железо, игровой ноутбук трехлетней давности.
I>>1. JS выдает очень большой разброс в показаниях.
I>> Ты ведь видел это, не так ли ?
CM>Есть одна небольшая проблема. Из моей серии замеров, даже минимальное число примерно соответствует твоему — но только это на моем железе, которое в два раза быстрее твоего. Нестыковочка.
А ты не пробовал дочитать до конца, прежде чем срывать покровы ?
I>> 1.5с — как думаешь, какое число я взял из __серии__ замеров ?
CM>Минимальное, конечно же? Я вижу, без мухлежа ты просто жить не можешь.
Минимальное, потому что в JS, в отличие от C#, GC слишком сильно вмешивается в работу основного потока. И много других фокусов происходит, которых в C# нет.
I>>2. _точная_ версия твоего JS-рантайма какая ? А у меня ? Надеюсь, ты помнишь, что речь была про эксперимернтальный рантайм ?
CM>Да-да, я помню. А какой чудак вообще опирается на данные экспериментальных версий? Стандартный выбор нормального человека — это последний релиз.
Итого — по существу возражений нет ?
I>>На стандартном числа совсем другие, но расклад тот же — инициализация в пользу C#, сортировка — в пользу JS.
CM>Только если в JS версии подмухлевать с форматтером и компарером, как мы уже обнаружили. А если не мухлевать, то JS сливает в обеих половинах
теста.
До кучи — .Net Jit более качественный, чем JS. А это значит, что разница в железе на JS видна слабее. Что вобщем очевидно. Кроме того, JS сам по себе дает больше промахов по кешу, т.е. влияние проца и кеша будет меньше.
Есть еще один нюанс — версии рантаймов .Net у нас разные. Здесь тоже есть отличия. А это значит, что железо, возможно, отличается не в двое, а меньше. Это тоже нужно учитывать.
Напоследок — я то пофиксил и сортировку в C#, а ты замеряешь свой "алгоритм" у которого всего лишь асимптотика такая же, а абсолютно число компараций отличается. Хы-хы.