Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 08.09.17 19:06
Оценка:
Кто-нибудь уже щупал его на предмет производительности? Насколько сильно сливает по сравнению с C — на десятки процентов, в разы или в десятки раз, как JS?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: Реальная производительность WebAssembly?
От: Arsen.Shnurkov  
Дата: 09.09.17 10:48
Оценка:
CM> Насколько сильно сливает по сравнению с C — на десятки процентов, в разы или в десятки раз, как JS?

Какая разница, если что-либо делать можно только с выходом через js ?
Re: Реальная производительность WebAssembly?
От: alex_public  
Дата: 09.09.17 11:17
Оценка: 2 (2)
Здравствуйте, CoderMonkey, Вы писали:

CM>Кто-нибудь уже щупал его на предмет производительности? Насколько сильно сливает по сравнению с C — на десятки процентов, в разы или в десятки раз, как JS?


Ты бы поиском то глянул в начале, прямо на этом форуме. )))

http://rsdn.org/forum/flame.comp/6729734.1
Автор: alex_public
Дата: 20.03.17


Если кратко, то без поддержки SIMD (ожидается только в следующем релизе, который непонятно когда будет) пока результат не очень (хотя кому-то и х2 ускорения относительно JS могут пригодиться). А вот когда она появится, то думаю отставание от C/C++ будет не более двух раз (это прикидка на основание цифр для "WASM" и "C++ nosimd" из таблички по ссылке выше), которое будет являться следствием обеспечения гарантий безопасности песочницы.
Отредактировано 09.09.2017 11:19 alex_public . Предыдущая версия .
Re[2]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.09.17 14:22
Оценка:
Здравствуйте, Arsen.Shnurkov, Вы писали:

AS>только с выходом через js ?


В смысле?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.09.17 14:23
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Если кратко, то без поддержки SIMD (ожидается только в следующем релизе, который непонятно когда будет) пока результат не очень (хотя кому-то и х2 ускорения относительно JS могут пригодиться). А вот когда она появится, то думаю отставание от C/C++ будет не более двух раз (это прикидка на основание цифр для "WASM" и "C++ nosimd" из таблички по ссылке выше), которое будет являться следствием обеспечения гарантий безопасности песочницы.


JS и C# на одном уровне — это уже выглядит крайне сомнительно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Реальная производительность WebAssembly?
От: alex_public  
Дата: 09.09.17 15:45
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

CM>JS и C# на одном уровне — это уже выглядит крайне сомнительно.


Похоже кто-то проспал весь прогресс в быстродействие JS-движков. )))

P.S. Если сомнительно, то проверь сам — код для JS имеется по ссылке выше, а C# вариант можно увидеть в этой http://rsdn.org/forum/flame.comp/6070881.1
Автор: alex_public
Дата: 07.06.15
темке, где-то чуть дальше Java варианта. )
Re[4]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.09.17 15:54
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Похоже кто-то проспал весь прогресс в быстродействие JS-движков. )))


Нет, кто-то просто писал реальный код на JS и делал сравнение. В среднем, в 10-20 раз медленнее и еще хуже по памяти.

_>P.S. Если сомнительно, то проверь сам — код для JS имеется по ссылке выше, а C# вариант можно увидеть в этой http://rsdn.org/forum/flame.comp/6070881.1
Автор: alex_public
Дата: 07.06.15
темке, где-то чуть дальше Java варианта. )


Минимум динамического выделения памяти, никаких объектов, никаких полиморфных вызовов. Ну еще бы.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Реальная производительность WebAssembly?
От: alex_public  
Дата: 09.09.17 16:21
Оценка: +1
Здравствуйте, CoderMonkey, Вы писали:

_>>Похоже кто-то проспал весь прогресс в быстродействие JS-движков. )))

CM>Нет, кто-то просто писал реальный код на JS и делал сравнение. В среднем, в 10-20 раз медленнее и еще хуже по памяти.

Чем что, чем C/C++? Так с этим как бы никто и не спорит... Только вот C# тут как бы не сильно далеко ушёл. )))

_>>P.S. Если сомнительно, то проверь сам — код для JS имеется по ссылке выше, а C# вариант можно увидеть в этой http://rsdn.org/forum/flame.comp/6070881.1
Автор: alex_public
Дата: 07.06.15
темке, где-то чуть дальше Java варианта. )

CM>Минимум динамического выделения памяти, никаких объектов, никаких полиморфных вызовов. Ну еще бы.

Насчёт полиморфных вызовов в JS — это конечно очень забавно слышать. )))

А насчёт памяти — так это и C++ начнёт тормозить, если её постоянно туда сюда гонять. Надо как бы уметь писать оптимальный код, если уж мы говорим о производительности...
Re[6]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.09.17 16:25
Оценка: +2
Здравствуйте, alex_public, Вы писали:

_>Чем что, чем C/C++? Так с этим как бы никто и не спорит... Только вот C# тут как бы не сильно далеко ушёл. )))


Нет, чем C#.

_>Насчёт полиморфных вызовов в JS — это конечно очень забавно слышать. )))


Насколько я понимаю — они там все полиморфные, кроме некоторых встроенных операторов, которые оптимизируются. Так что непонятно, чего тут забавного.

_>А насчёт памяти — так это и C++ начнёт тормозить, если её постоянно туда сюда гонять. Надо как бы уметь писать оптимальный код, если уж мы говорим о производительности...


Хоть как ты ее гоняй, хуже чем в JS не получится.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Отредактировано 09.09.2017 16:29 CodeMonkey . Предыдущая версия .
Re[4]: Реальная производительность WebAssembly?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.09.17 07:55
Оценка:
Здравствуйте, alex_public, Вы писали:



_>P.S. Если сомнительно, то проверь сам — код для JS имеется по ссылке выше, а C# вариант можно увидеть в этой http://rsdn.org/forum/flame.comp/6070881.1
Автор: alex_public
Дата: 07.06.15
темке, где-то чуть дальше Java варианта. )


C# это не только CLR, но и .Net Native
http://rsdn.org/forum/dotnet/6738556.1
Автор: Serginio1
Дата: 28.03.17


Приведи вариант с .Net Native.
и солнце б утром не вставало, когда бы не было меня
Re[6]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 10.09.17 16:01
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Чем что, чем C/C++? Так с этим как бы никто и не спорит... Только вот C# тут как бы не сильно далеко ушёл. )))


А давай ка посмотрим на более близкий к реальности код?
Как это будет на JS?

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QuickSort
{
    class Program
    {
        static void Main(string[] args)
        {
            var watch = Stopwatch.StartNew();

            int Compare(TestClass x, TestClass y) => x.Id.CompareTo(y.Id);
            var vals = Enumerable.Range(0, 1000 * 1000).Select(x => new TestClass()).ToArray();

            QuickSort(vals, Compare);

            watch.Stop();
            Console.WriteLine($"Total secs: {watch.Elapsed.TotalSeconds}");
        }

        public static void QuickSort<T>(T[] vals, Func<T, T, int> compare)
        {
            QuickSort(vals, compare, 0, vals.Length - 1);
        }

        public static void QuickSort<T>(T[] vals, Func<T, T, int> compare, int left, int right)
        {
            if (right <= left)
                return;

            var i = left;
            var j = right;
            var mid = (int)(((long)left + right) / 2);
            var midVal = vals[mid];

            while (i <= j)
            {
                while (compare(vals[i], midVal) < 0)
                {
                    i++;
                }

                while (compare(vals[j], midVal) > 0)
                {
                    j--;
                }

                if (i <= j)
                {
                    var tmp = vals[i];
                    vals[i] = vals[j];
                    vals[j] = tmp;

                    i++;
                    j--;
                }
            }

            QuickSort(vals, compare, left, j);
            QuickSort(vals, compare, i, right);
        }
    }

    class TestClass
    {
        public string Id = CreateGuid();
        public string Value = CreateGuid();

        static string CreateGuid()
        {
            return Guid.NewGuid().ToString().Replace("-", "");
        }

        public override string ToString()
        {
            return Id;
        }
    }
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.09.17 08:59
Оценка: :))
Здравствуйте, CoderMonkey, Вы писали:

_>>Если кратко, то без поддержки SIMD (ожидается только в следующем релизе, который непонятно когда будет) пока результат не очень (хотя кому-то и х2 ускорения относительно JS могут пригодиться). А вот когда она появится, то думаю отставание от C/C++ будет не более двух раз (это прикидка на основание цифр для "WASM" и "C++ nosimd" из таблички по ссылке выше), которое будет являться следствием обеспечения гарантий безопасности песочницы.


CM>JS и C# на одном уровне — это уже выглядит крайне сомнительно.


C# только памяти меньше ест, а по перформансу практически сравнялись. Но возможностей для оптимизации в C# больше.
Re[4]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 12.09.17 17:15
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>C# только памяти меньше ест, а по перформансу практически сравнялись.


Давай ка проведем реальный тест. Re[6]: Реальная производительность WebAssembly?
Автор: CoderMonkey
Дата: 10.09.17
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.09.17 18:58
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

I>>C# только памяти меньше ест, а по перформансу практически сравнялись.


CM>Давай ка проведем реальный тест. Re[6]: Реальная производительность WebAssembly?
Автор: CoderMonkey
Дата: 10.09.17


https://jsperf.com/yet-another-quicksort-right/3
Re[6]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 12.09.17 20:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>https://jsperf.com/yet-another-quicksort-right/3


1. Массив чисел. Я на 99.9% уверен, что они специально оптимизируются в рантайме.
2. Сравнивать разные реализации — вообще довольно бессмысленно.

И кстати, тестовый код:

var arrTest = arr;
quickSort(arrTest);

Если я правильно понимаю, то первая строка копирует только ссылку на массив, а не создает копию всего массива?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Отредактировано 12.09.2017 21:03 CodeMonkey . Предыдущая версия . Еще …
Отредактировано 12.09.2017 20:54 CodeMonkey . Предыдущая версия .
Re[7]: Реальная производительность WebAssembly?
От: Klikujiskaaan КНДР  
Дата: 12.09.17 21:00
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

CM>1. Массив чисел. Я на 99.9% уверен, что они специально оптимизируются в рантайме.

CM>2. Сравнивать разные реализации — вообще довольно бессмысленно.

Сама идея сравнивать что-то синтетикой — не слишком удачна, темболее использовать ради этого квиксорт.
Re[8]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 12.09.17 21:02
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Сама идея сравнивать что-то синтетикой — не слишком удачна, темболее использовать ради этого квиксорт.


Оценить порядок величины — хватит. Ну и если есть идеи получше, то велкам.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[7]: Реальная производительность WebAssembly?
От: alex_public  
Дата: 12.09.17 21:43
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

_>>Чем что, чем C/C++? Так с этим как бы никто и не спорит... Только вот C# тут как бы не сильно далеко ушёл. )))

CM>Нет, чем C#.

JS в 20 раз медленнее C#? ) Ты пишешь из начала 2000-ых? )))

_>>Насчёт полиморфных вызовов в JS — это конечно очень забавно слышать. )))

CM>Насколько я понимаю — они там все полиморфные, кроме некоторых встроенных операторов, которые оптимизируются. Так что непонятно, чего тут забавного.

Так об этом и речь. )

_>>А насчёт памяти — так это и C++ начнёт тормозить, если её постоянно туда сюда гонять. Надо как бы уметь писать оптимальный код, если уж мы говорим о производительности...

CM>Хоть как ты ее гоняй, хуже чем в JS не получится.

Ну так если мы говорим о сравнение производительности, то очевидно что надо сравнивать лучшие решения, а не худшие. )
Re[7]: Реальная производительность WebAssembly?
От: alex_public  
Дата: 12.09.17 22:39
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

_>>Чем что, чем C/C++? Так с этим как бы никто и не спорит... Только вот C# тут как бы не сильно далеко ушёл. )))

CM>А давай ка посмотрим на более близкий к реальности код?
CM>Как это будет на JS?

Давай посмотрим) Проведи соответствующее тестирование и выложи здесь результаты — думаю всем будет интересно. )
Re[8]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 12.09.17 23:05
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Давай посмотрим) Проведи соответствующее тестирование и выложи здесь результаты — думаю всем будет интересно. )


Я в JS не особо разбираюсь. Переведи код.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.