Re[30]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 29.09.17 15:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>То есть, ты за две недели не смог const на var или let переделать ?


Это всего лишь очевидный пример твоей небрежности. Мелкая ошибка — на поверхности, а сколько в твоем коде менее очевидных косяков?

I>Или две недели не мог взять обновленный код из сообщения ?

I>Выходит, твои обвинения были не просто голословны, а вообще враньё, ибо ты не смог ничего запустить ?

Я вижу, у тебя память уже совсем отказала?

I>Движок v8 доминирует среди себе подобных, а фокс это вымирающая платформа. v8 есть не просто везде, он почти везде доминирует.


Ок, допустим. А теперь скажи точно, какую версию твоего замечательного кода надо запускать. Только чтобы не вылетало, можешь постараться?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[24]: Реальная производительность WebAssembly?
От: Ночной Смотрящий Россия  
Дата: 30.09.17 11:05
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Во первых, это не так. i3, i5, i7 отличаются значительно, особенно, если они разных поколений.


Числом ядер и НТ в основном, а JS однопоточный.

I>Во вторых. Кроме того, частоту памяти никто не отменял — сортировка это проезд по памяти, а не булка с маслом.


В случае JS ты разницу в скорости памяти не увидишь.
Re[20]: Реальная производительность WebAssembly?
От: Ночной Смотрящий Россия  
Дата: 30.09.17 11:05
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>1. В реальном проекте такой код никто писать не будет.


Вот именно.

A> Подгонять реализацию на C# под гипотетическую реализацию того же самого на JS — зачем такое может понадобиться практически?


Существуют два вида тестов — синтетика и реальные алгоритмы. В случае синтетики (а все тесты в этом топике синтетика в чистом виде) — надо именно подгонять, иначе получается измерение фаз Луны.
Re[25]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.09.17 12:05
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

I>>Во первых, это не так. i3, i5, i7 отличаются значительно, особенно, если они разных поколений.


НС>Числом ядер и НТ в основном, а JS однопоточный.


Основной поток у JS один, а вот VM — многопоточная.

I>>Во вторых. Кроме того, частоту памяти никто не отменял — сортировка это проезд по памяти, а не булка с маслом.


НС>В случае JS ты разницу в скорости памяти не увидишь.


Ха-ха. Полагаю, ты можешь это доказать тестом ?
Re[31]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.09.17 12:22
Оценка: -1 :)
Здравствуйте, CoderMonkey, Вы писали:

I>>То есть, ты за две недели не смог const на var или let переделать ?


CM>Это всего лишь очевидный пример твоей небрежности. Мелкая ошибка — на поверхности, а сколько в твоем коде менее очевидных косяков?


Наконец то ты понял! Код — порт 1 в 1 твоей версии, за исключением ряда фиксов. Так шта косяки прежде всего в твоём коде. Ты заметил, что я реализовал даже ленивую инициализацию, что бы было как у тебя с Linq ? Использование Linq в таком 'тесте' — косяк нумер 1.

I>>Или две недели не мог взять обновленный код из сообщения ?

I>>Выходит, твои обвинения были не просто голословны, а вообще враньё, ибо ты не смог ничего запустить ?

CM>Я вижу, у тебя память уже совсем отказала?


У меня всё в порядке, это ведь ты не можешь запустить.

I>>Движок v8 доминирует среди себе подобных, а фокс это вымирающая платформа. v8 есть не просто везде, он почти везде доминирует.


CM>Ок, допустим. А теперь скажи точно, какую версию твоего замечательного кода надо запускать. Только чтобы не вылетало, можешь постараться?


Если глаза раскрывать, увидишь гораздо больше
http://rsdn.org/f/message/version/116389

Всё ясно ? Фиксу уже две недели! Вставляешь в клипборт, вставляешь из клипборда и всё палит. Но ты, конечно, и без запуска знаешь, что я наврал
Re[49]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.09.17 12:36
Оценка: -1 :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Для тебя стараться нет никакого желания. Ты клянчил портирование в JS, а когда получил его, начал кидаться дерьмом.


CM>А кто виноват, что твои цифры в разы расходятся?


Именно!
Во первых, ты никак не можешь понять про CompareOrdinal
Во вторых, у меня железо и vm совсем не такие как у тебя.
В третьих, ты не замечаешь, что и время C# версии тоже отличается и очень существенно


I>> На кой ляд мне тебе помогать, объясни внятно ?


CM>Ты и так никогда ничего не объяснял. Зачем начинать?


Только я раз пять объяснил тебе причину расхождения чисел у тебя и у меня, но до тебя не доходит хотя бы та часть, что про CompareOrdinal.
Ты свято веришь, что цыфры должны быть не те. Ты бы поинтересовался сначала, что за железо, частота, рантайм у меня. Это ж легко проверить — есть сайт jsperf, вставляешь в него код, сайт записывает все результаты и показывает расклад по браузерам. Попробуй, откроешь для себя много нового.

А если разберешься с CompareOrdinal, ускоришь свой вариант раза в три. Если внесёшь мой фикс — ускоришь свой вариант еще чуть-чуть. В итоге С# будет раза в полтора быстрее JS работать.
Ты всё это проделать не в состоянии, но активно наскакиваешь с глупыми вопросами. Детский сад.
Re[50]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.10.17 20:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Во первых, ты никак не можешь понять про CompareOrdinal


Чувак, ты уже просто бредишь

I>Во вторых, у меня железо и vm совсем не такие как у тебя.

I>В третьих, ты не замечаешь, что и время C# версии тоже отличается и очень существенно

Не в разы, и тем более — не в разные стороны.
Ты меня утомил пустой болтовней, завязывай.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[32]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 09.10.17 20:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>У меня всё в порядке, это ведь ты не можешь запустить.


Да-да. С твоим кодом всегда все в порядке. А то, что он вылетает с ошибкой — это вообще не твоя проблема

I>Всё ясно ? Фиксу уже две недели! Вставляешь в клипборт, вставляешь из клипборда и всё палит. Но ты, конечно, и без запуска знаешь, что я наврал


Запускаю еше раз, в хроме. Получаю
Uncaught (in promise) TypeError: Assignment to constant variable.
    at Main (index.html:30)
    at promise.then (index.html:123)
    at <anonymous>

Вот ведь незадача, проклятый мир всё никак не хочет прогибаться под Ikemefula.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[51]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.10.17 08:04
Оценка: -1 :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Во первых, ты никак не можешь понять про CompareOrdinal


CM>Чувак, ты уже просто бредишь


Ога. Твое понимание CompareOrdinal видно из нападок на результаты тестов.

I>>Во вторых, у меня железо и vm совсем не такие как у тебя.

I>>В третьих, ты не замечаешь, что и время C# версии тоже отличается и очень существенно

CM>Не в разы, и тем более — не в разные стороны.


1 ты похоже так и не смог
2 Код пробовал читать ? Шарп обгоняет на инициализации, потому что генераторы в JS еще сырые, неоптимизированые. А в сортировке сливает из за CompareOrdinal.
Re[33]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.10.17 08:28
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

I>>Всё ясно ? Фиксу уже две недели! Вставляешь в клипборт, вставляешь из клипборда и всё палит. Но ты, конечно, и без запуска знаешь, что я наврал


CM>Запускаю еше раз, в хроме. Получаю

CM>
CM>Uncaught (in promise) TypeError: Assignment to constant variable.
CM>    at Main (index.html:30)
CM>    at promise.then (index.html:123)
CM>    at <anonymous>
CM>

CM>Вот ведь незадача, проклятый мир всё никак не хочет прогибаться под Ikemefula.

Ты скопировал старый вариант по ссылке!
http://rsdn.org/f/message/version/116389

Кликаешь на "Новый" и запускаешь его. Старый работает, только на экспериментальном рантайме, где нет разницы между const, var и let. В новом я подфиксил под обычный рантайм.

Похоже, что таки да, пока я лично не покажу тебе, как скопировать новый вариант, от 19го сентября, ты сделать этого не сможешь
Re[52]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 10.10.17 15:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>1 ты похоже так и не смог


Получить твои бредовые числа — нет, так и не смог
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[34]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 10.10.17 15:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I> Ты скопировал старый вариант по ссылке!


А давать сразу нормальную ссылку не судьба?

I>Похоже, что таки да, пока я лично не покажу тебе, как скопировать новый вариант, от 19го сентября, ты сделать этого не сможешь


Пока ты не начнешь писать нормально, точно не смогу.
Да, это уже намного лучше. Средний результат практически одинаковый. Тебе осталось только обосновать, почему из всех браузеров запускать бенчмарки надо только в хроме
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[35]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.10.17 17:45
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Похоже, что таки да, пока я лично не покажу тебе, как скопировать новый вариант, от 19го сентября, ты сделать этого не сможешь


CM>Пока ты не начнешь писать нормально, точно не смогу.


Не ко мне вопрос. Ты не можешь запустить, но вот время в файрфоксе замерить можешь. Парадокс.

CM>Да, это уже намного лучше. Средний результат практически одинаковый. Тебе осталось только обосновать, почему из всех браузеров запускать бенчмарки надо только в хроме


Я на этот вопрос отвечал трижды.
Re[53]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.10.17 17:59
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

I>>1 ты похоже так и не смог


CM>Получить твои бредовые числа — нет, так и не смог


Разумеется. Вот твои "числа": "Средний результат практически одинаковый"

Мне, например, трудно сравнить свои замеры с твоим "Средний результат практически одинаковый"

У меня замеры в обоих языках выдают две цифры — инициализация и сама сортировка. Это сделано потому, смотри внимательно, что скорость ленивого кода пополам с энергичным никто в своём уме не делает. Пудозреваю, ты всё суммировал, получил одинаковые числа и доволен. На самом деле ты получил косяк — две ошибки замеров, которые друг друга компенсируют. Вот и получается "одинаковый"

Итого, от тебя требуется 5 (пять) вещей:
1 время инициализации JS, вариант от 19го сент.
2 время сортировки JS, вариант от 19го сент.
3 время инициализации, C# в исходном варианте
4 время сортировки, C# в исходном варианте
5 точное указание железа, проц, технология, частота, шина, технология, память, технология

Как выложишь, можешь сравнить с тем, что я привел. п.5. чисто что бы проверить твою "гипотезу" что де железо нынче ничего не решает.
Re[36]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 10.10.17 19:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Я на этот вопрос отвечал трижды.


Потому что в нем твой код получается быстрее?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[54]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 10.10.17 19:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Это сделано потому, смотри внимательно, что скорость ленивого кода пополам с энергичным никто в своём уме не делает.


Это где ты там ленивый код увидел?

I>Итого, от тебя требуется 5 (пять) вещей:

I>1 время инициализации JS, вариант от 19го сент.
I>2 время сортировки JS, вариант от 19го сент.

Тогда уж мы будем и твой код сравнивать в исходном варианте. Вылетает с ошибкой, считаем время до корректного результата за бесконечность
А во вторых, твой код выдает все время очень разные результаты, разброс +-50%. Перепиши лучше, чтобы считалось среднее время хотя бы за 10 прогонов.

I>3 время инициализации, C# в исходном варианте

I>4 время сортировки, C# в исходном варианте

Пара небольших фиксов, и получаем:
Init: 0.777316665
Sort: 0.57440166

  C#
        public static void Test()
        {
            var repeatCount = 10;

            var initWatch = Stopwatch.StartNew();

            TestClass[] origVals = null;
            for (var i = 0; i < repeatCount; i++)
            {
                origVals = Enumerable.Range(0, 1000 * 1000).Select(x => new TestClass()).ToArray();
            }

            initWatch.Stop();
            Console.WriteLine($"Init: {initWatch.Elapsed.TotalSeconds / repeatCount}");

            int Compare(TestClass x, TestClass y) => string.CompareOrdinal(x.Id, y.Id);

            var watch = Stopwatch.StartNew();

            for (var i = 0; i < repeatCount; i++)
            {
                var vals = origVals.ToArray();
                QuickSort(vals, Compare);
            }

            watch.Stop();
            Console.WriteLine($"Sort: {watch.Elapsed.TotalSeconds / repeatCount}");

            if (Debugger.IsAttached)
                Debugger.Break();
        }

        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 readonly string Id;
        public readonly string Value;

        public TestClass()
        {
            Id = CreateId();
            Value = CreateId();
        }

        static readonly Random RandomGen = new Random();

        static string CreateId()
        {
            var num = (long)Math.Floor(RandomGen.NextDouble() * Math.Pow(10, 16));
            var res = num.ToString(Format, CultureInfo.InvariantCulture);
            return res;
        }

        static readonly string Format = new string('0', 16);

        public override string ToString()
        {
            return Id;
        }
    }



I>5 точное указание железа, проц, технология, частота, шина, технология, память, технология


i7-4790k, 4x 8GB DDR3 SDRAM PC3-14900

I>Как выложишь, можешь сравнить с тем, что я привел. п.5. чисто что бы проверить твою "гипотезу" что де железо нынче ничего не решает.


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

I>>Это сделано потому, смотри внимательно, что скорость ленивого кода пополам с энергичным никто в своём уме не делает.


CM>Это где ты там ленивый код увидел?


От тебя одно откровение за другим. Вот это и есть ленивый код
Enumerable.Range(0, 1000 * 1000).Select(x => new TestClass())

С помощью ToArray ты леникую последовательность перегоняешь в массив. Скорость этого участка кода соответсвует скорости узкого места. Никакого чуда здесь нет.

CM>Тогда уж мы будем и твой код сравнивать в исходном варианте. Вылетает с ошибкой, считаем время до корректного результата за бесконечность

CM>А во вторых, твой код выдает все время очень разные результаты, разброс +-50%. Перепиши лучше, чтобы считалось среднее время хотя бы за 10 прогонов.

Во-первых, ни к чему. мой код выдает серию результатов, вот их и показывай, скажем, штук 10. Для того и сделано, что бы видеть эту особенность.
Во-вторых, смотри сам, что ты выдал — твой код не компилируется

I>>3 время инициализации,
C# в исходном варианте
I>>4 время сортировки,
C# в исходном варианте

CM>Пара небольших фиксов, и получаем:


Сравни "C# в исходном варианте" и "Пара небольших фиксов"
Сим ты признался, что исходный вариант C# отстой

CM>Init: 0.777316665

CM>Sort: 0.57440166

Твои "пара фиксов" это изменение типа данных. Фактически, это глобальное изменение. Ты сравниваешь разные вещи

I>>Как выложишь, можешь сравнить с тем, что я привел. п.5. чисто что бы проверить твою "гипотезу" что де железо нынче ничего не решает.


CM>Давай. Жду.


Пофикси сначала свой код, у меня он не компилируется
Отредактировано 11.10.2017 11:11 Pauel . Предыдущая версия . Еще …
Отредактировано 11.10.2017 11:04 Pauel . Предыдущая версия .
Re[56]: Реальная производительность WebAssembly?
От: alexzzzz  
Дата: 11.10.17 12:01
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>>>Это сделано потому, смотри внимательно, что скорость ленивого кода пополам с энергичным никто в своём уме не делает.

CM>>Это где ты там ленивый код увидел?

I>От тебя одно откровение за другим. Вот это и есть ленивый код

I>
I>Enumerable.Range(0, 1000 * 1000).Select(x => new TestClass())
I>

I>С помощью ToArray ты леникую последовательность перегоняешь в массив. Скорость этого участка кода соответсвует скорости узкого места. Никакого чуда здесь нет.

По этой логике здесь справа от присваивания тоже ленивый код, потому что он тоже бы и не выполнялся, не будь присваивания.
var mid = (int)(((long)left + right) / 2);
Re[57]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 11.10.17 12:17
Оценка: -1 :)
Здравствуйте, alexzzzz, Вы писали:

A>По этой логике здесь справа от присваивания тоже ленивый код, потому что он тоже бы и не выполнялся, не будь присваивания.

A>
var mid = (int)(((long)left + right) / 2);


Разумеется, это не так. Без присваивания это у тебя даже не скомпилируется. В некоторых языках — да, это будет ленивый код, потому что без присваивания даже не выполнится.

Выполнение ленивого кода определяется тем, как ты его используешь.

Enumerable.Range(0, 1000 * 1000).Select(x => new TestClass())


Вот этот код скомпилируется и выполняется, всё ок. Но он выполняется по разному в зависимости от продолжения.

ToArray приведет к тому, что колбек вызовется миллион раз.
First() приведет к тому, что колбек вызовется один раз.

Вот это и есть ленивость.
В отличие от нее, энергичный вариант, т.е. тупо цикл, выполняется всегда одинаково, независимо от того, как ты используешь результаты.
Re[56]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 11.10.17 17:02
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>С помощью ToArray ты леникую последовательность перегоняешь в массив. Скорость этого участка кода соответсвует скорости узкого места. Никакого чуда здесь нет.


Вот именно. В чем проблема то?

I>Во-первых, ни к чему. мой код выдает серию результатов, вот их и показывай, скажем, штук 10. Для того и сделано, что бы видеть эту особенность.


Результаты все равно дерьмовые, к гадалке не ходи
  Скрытый текст
index.html:28 Init, miliseconds: 4353
Main @ index.html:28
index.html:31 Total miliseconds: 1578
Main @ index.html:31
index.html:28 Init, miliseconds: 4470
Main @ index.html:28
index.html:31 Total miliseconds: 2404
Main @ index.html:31
index.html:28 Init, miliseconds: 4286
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 2111
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4612
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1864
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4052
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1807
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4080
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1773
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4149
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1842
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4126
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1753
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4096
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1817
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4159
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1753
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4133
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1763
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4139
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1734
Main @ index.html:31
promise.then @ index.html:122
index.html:28 Init, miliseconds: 4190
Main @ index.html:28
promise.then @ index.html:122
index.html:31 Total miliseconds: 1792

I>Во-вторых, смотри сам, что ты выдал — твой код не компилируется

Ошибок компиляции там нет, в отличие от твоего кода Ты решил включить дурака и не догадаться, куда этот код надо копировать?

I>Сим ты признался, что исходный вариант C# отстой


Всего лишь черновой вариант. Чего ты возбудился так?

I>Твои "пара фиксов" это изменение типа данных. Фактически, это глобальное изменение. Ты сравниваешь разные вещи


Заюлил Никаких глобальных изменений там нет.
И разница в 3-4 раза против JS, и по скорости, и по памяти.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.