Re[43]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 26.09.17 19:01
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

I>>Непонятно, что ты в это вкладываешь. Функциональность, внешний вид, количество строчек кода ?


CM>Функциональность, естественно.


I>>Сначала ты взялся соревноваться с Excel и googlesheets. Ты передумал ?


CM>И не брался Какой ты все-таки унылый изворотливый казуист.


Цитирую некоего CoderMonkey: "Открываешь гугловский редактор таблиц ..."
Щас ты наверное скажешь, что не предлагал меряться с гуглошитами ?

I>>И как ты это будешь сравнивать ? Изложи методику, а то судя по предыдущему "примеру" сортировки, ты вообще в замерах ничего не понимаешь.


CM>Враньё.


Всю работу по сравнению проделали ровно три человека и тебя в их числе нет. А вот ошибочка в твоей сортировке — есть
Итого — где методика ?
Re[26]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 26.09.17 19:02
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Разумеется, потому что ты в фоксе запускаешь. Чего ты хотел от вымирающей платформы ? В Интернет Эксплорере результат еще хуже будет.




I>Частота процессора, турбо-режим, частота памяти — все это дает слишком большое влияние.


Не в разы большое.

I>Важно, что ты не пробовал ни того, ни другого, но перешел к обвинениям.


Что поделаешь, если ты все время юлишь и выкручиваешься. Давай конкретные описания, что и как запускать — тогда и обвинений не будет. А то мой телепатический шар давно сломался.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[44]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 26.09.17 19:05
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Цитирую некоего CoderMonkey: "Открываешь гугловский редактор таблиц ..."

I>Щас ты наверное скажешь, что не предлагал меряться с гуглошитами ?

Простой и быстрый тест. Или, как вариант, открываешь Янус и сравниваешь расход памяти с тем же топиком — чем больше топик, тем лучше — в браузере.
Тебе непонятно, что такое простой и быстрый тест и зачем он нужен?

I>Всю работу по сравнению проделали ровно три человека и тебя в их числе нет.


Зато ты, конечно же, есть

I>А вот ошибочка в твоей сортировке — есть


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

I>>>Я такое наблюдал и вживую, и со стороны. Оптимизации это всегда усложнения. Соответственно стоимость поддержки растет. Отсюда и выражение про "premature optimisation". Т.е. выше уровня поддерживаемости не прыгнешь, это и есть потолок для оптимизаций, а вовсе не сам эффект.


A>>

"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."

A>>Будет надо — прыгнешь. На самый жуткий хардкор повесишь табличку "Не влезай — убьёт!", обернёшь каким-нибудь более-менее пристойным интерфейсом и обвесишь по периметру тестами.
I>Ты почему то процитировал по английски то, что я сказал тебе по русски.

Ты стараешься распространить правила написания условных 97% кода на оставшиеся 3%. По твоей логике не существует никаких 97% и 3%, а существуют только 100%, где всецело правит мейнтенанс. Но если ты не заставишь эти критические 3% работать так, как они должны работать, можешь "выбросить нахрен проект и пилить на другом языке, архитектуре и т.д." И удачи тебе переписать 100% проекта на С++ со всеми фичами за в два раза меньшее время, вместо того чтобы немножко локально запачкаться в C#.
Re[21]: Реальная производительность WebAssembly?
От: alexzzzz  
Дата: 26.09.17 19:44
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

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

CM>"Решается" как? Быстрее написать прототип? Быстрее написать полноценный релиз? Быстрее искать и фиксить баги?

Код быстрее работает. Если нам интересна не скорость работы кода, а что-то другое, мы бы не стали тут измерять и обсуждать именно скорость работы кода. Я бы не стал.

A>>Если подгонять реализации решения задачи на разных языках друг под друга и потом их сравнивать, то пользы от такого сравнения я уже не вижу.

CM>Можно и не подгонять. Но тогда для небольшого бенчмарка слишком велика вероятность, что одна мелкая оптимизация очень сильно исказит результат — в случае с встроенной сортировкой, например. А писать большой и объемистый бенчмарк — долго и сложно.
CM>Так что, проще всё же взять и сравнить по возможности сравнимое.

Это похоже на поиски там, где светло, а не там, где потеряли.

Если под "идеальным результатом" понимать результат сравнения полного решения задачи на разных языках (сравнить две готовые программы, по итогам одну выкинуть, вторую использовать), то я твою мысль понимаю так: вместо того чтобы допустить в бенчмарках возможное случайное искажение (отклонение их результата от идеального), ты предлагаешь внести в бенчмарки намеренные оторванные от реальности искажения в надежде, что таким образом результат окажется менее искажён. Я думаю, что это иррационально.
Отредактировано 26.09.2017 19:44 alexzzzz . Предыдущая версия .
Re[22]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 26.09.17 19:49
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>Код быстрее работает. Если нам интересна не скорость работы кода, а что-то другое, мы бы не стали тут измерять и обсуждать именно скорость работы кода. Я бы не стал.


В чем и насколько? Как насчет потребления памяти?

A>Если под "идеальным результатом" понимать результат сравнения полного решения задачи на разных языках (сравнить две готовые программы, по итогам одну выкинуть, вторую использовать), то я твою мысль понимаю так


Нет. Моя мысль — по возможности, исследовать не производительность встроенных функций, а производительность языка как такового.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[38]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.09.17 08:50
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>>>

"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."

A>>>Будет надо — прыгнешь. На самый жуткий хардкор повесишь табличку "Не влезай — убьёт!", обернёшь каким-нибудь более-менее пристойным интерфейсом и обвесишь по периметру тестами.
I>>Ты почему то процитировал по английски то, что я сказал тебе по русски.

A>Ты стараешься распространить правила написания условных 97% кода на оставшиеся 3%. По твоей логике не существует никаких 97% и 3%, а существуют только 100%, где всецело правит мейнтенанс.


Именно. Все части проекта должны обладать этим свойством. Оптимизируются самые критичные вещи. Раз они критичные, то и майнтенас в них обязательное условие. Сам подумай — вдруг понадобится еще перформанса выжать, а майнтенанс уже утерян. Каким чудом ты выжимать будешь ? Наугад строчки фиксить, не читая, не вникая и надеясь, что оно не только скомпилруется но и заработает с нужными свойствами ?

>Но если ты не заставишь эти критические 3% работать так, как они должны работать,


Майнтенанс означает, что ты можешь и прочитать, и понять, и модифицировать. И твои примеры "огородить", "не влезай" они целиком про майнтенанс.
Если у тебя нет такого свойства, то код неуправляемый, и нет никакой гарантии, что ты хоть чтото выпустишь.
Re[45]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.09.17 09:15
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Цитирую некоего CoderMonkey: "Открываешь гугловский редактор таблиц ..."

I>>Щас ты наверное скажешь, что не предлагал меряться с гуглошитами ?

CM>Простой и быстрый тест. Или, как вариант, открываешь Янус и сравниваешь расход памяти с тем же топиком — чем больше топик, тем лучше — в браузере.


Что ты называешь "память" ? Working Set, Virtual Size ?

CM>Тебе непонятно, что такое простой и быстрый тест и зачем он нужен?


У теста есть цель, критерии сравнения, т.е. та самая методика, про которую ты ничего сказать не можешь. Вроде обсуждаем дотнет и джаваскрипт, а ты лезешь с экселем, потому перепрыгиваешь на янус. Как это понимать ?
Янус и форум в браузере решают совершенно разые задачи, они даже слабо похожи. Общего там только UI.

I>>А вот ошибочка в твоей сортировке — есть

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

Ты видишь фикс, но не можешь его минимально проверить ? Или тебе непонятно, что у тебя там происходит ? Задавай нормальные вопросы, глядишь, получишь нормальные ответы.
Re[27]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.09.17 10:03
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Частота процессора, турбо-режим, частота памяти — все это дает слишком большое влияние.


CM>Не в разы большое.


Я тебе страшное скажу — все что выше статистической погрешности надо учитывать отдельно. Алё, ты что, не видишь, как отличаются твои и мои цифры версии C# ?

I>>Важно, что ты не пробовал ни того, ни другого, но перешел к обвинениям.


CM>Что поделаешь, если ты все время юлишь и выкручиваешься. Давай конкретные описания, что и как запускать — тогда и обвинений не будет. А то мой телепатический шар давно сломался.


node.exe file.js


node версии 0.6.11 или 0.8.5

Надо объяснять, что вставить в file.js ?

Еще проще — в консоль хрома вставить, тут могут быть нюансы, результаты в ноде будут постабильнее.

Надо объяснять, как запустить хром, вызвать DevTools и что такое консоль ?
Re[22]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.09.17 10:10
Оценка:
Здравствуйте, alexzzzz, Вы писали:

CM>>"Решается" как? Быстрее написать прототип? Быстрее написать полноценный релиз? Быстрее искать и фиксить баги?


A>Код быстрее работает. Если нам интересна не скорость работы кода, а что-то другое, мы бы не стали тут измерять и обсуждать именно скорость работы кода. Я бы не стал.


Скорость работы какого кода, библиотечного, рукописного ? Если у тебя обычный код отличатется по скорости скажем, раза в два, то у тебя узких мест в софтине будет не 3 процента, а 33.

A>Если под "идеальным результатом" понимать результат сравнения полного решения задачи на разных языках (сравнить две готовые программы, по итогам одну выкинуть, вторую использовать), то я твою мысль понимаю так: вместо того чтобы допустить в бенчмарках возможное случайное искажение (отклонение их результата от идеального), ты предлагаешь внести в бенчмарки намеренные оторванные от реальности искажения в надежде, что таким образом результат окажется менее искажён. Я думаю, что это иррационально.


Посмотри внимательно на цитату, что ты привел, про 97% и 3%. 97% пишутся на любом языке одинаково, потому что программист всегда один и тот же, он не может начать думать в два раза лучше, если ты ему другой язык дашь.
Re[23]: Реальная производительность WebAssembly?
От: alexzzzz  
Дата: 27.09.17 14:27
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

A>>Код быстрее работает. Если нам интересна не скорость работы кода, а что-то другое, мы бы не стали тут измерять и обсуждать именно скорость работы кода. Я бы не стал.

CM>В чем и насколько? Как насчет потребления памяти?

А что с потреблением памяти? Можно оптимизировать не на скорость, а на потребление памяти. Хотя довольно часто одно автоматически тащит за собой другое. Иногда, правда, наоборот.

Первый вопрос я не понял, к чему относится.

A>>Если под "идеальным результатом" понимать результат сравнения полного решения задачи на разных языках (сравнить две готовые программы, по итогам одну выкинуть, вторую использовать), то я твою мысль понимаю так

CM>Нет. Моя мысль — по возможности, исследовать не производительность встроенных функций, а производительность языка как такового.

Сферической производительности языка в вакууме не существует. Она зависит от решаемой задачи. Какие-то типы задач лучше ложатся на язык, какие-то хуже. В одних примерах разница в скорости между C# и C++ на уровне погрешности измерения, в других C++ примерно в полтора раза быстрее, в третьих в 10 раз, если у компилятора C++ "пасьянс сошёлся", а у C# нет.

Вне поставленной задачи мерять скорость смысла нет, результат не будет применим к реальным задачам. А если задача в общем виде есть, примерно понятно, какими способами её можно решать и можно из них выбирать наиболее эффективные.
Re[39]: Реальная производительность WebAssembly?
От: alexzzzz  
Дата: 27.09.17 14:42
Оценка:
Здравствуйте, Ikemefula, Вы писали:

A>>Код быстрее работает. Если нам интересна не скорость работы кода, а что-то другое, мы бы не стали тут измерять и обсуждать именно скорость работы кода. Я бы не стал.

I>Скорость работы какого кода, библиотечного, рукописного ?

Того, который быстрее переделывает входные данные в выходные.

I>Если у тебя обычный код отличатется по скорости скажем, раза в два, то у тебя узких мест в софтине будет не 3 процента, а 33.


33% узких мест не будет никогда. Как ты сам знаешь, скорость работы 97% кода никого не парит.

A>>Ты стараешься распространить правила написания условных 97% кода на оставшиеся 3%. По твоей логике не существует никаких 97% и 3%, а существуют только 100%, где всецело правит мейнтенанс.


I>Именно. Все части проекта должны обладать этим свойством. Оптимизируются самые критичные вещи. Раз они критичные, то и майнтенас в них обязательное условие. Сам подумай — вдруг понадобится еще перформанса выжать, а майнтенанс уже утерян. Каким чудом ты выжимать будешь?


Гм...
1. Ты знаешь, что на работу критических 3% кода выделен строго ограниченный бюджет времени.
2. Ты не будешь любыми средствами укладывать его в бюджет, потому что а вдруг в будущем бюджет ещё уменьшится и оптимизировать уже оптимизированный код окажется сложно.

Да ты в существующий бюджет уже не вписался с таким подходом. Критические 3% не работают как надо, продукт нерабочий, будущее не наступит.
Отредактировано 27.09.2017 14:47 alexzzzz . Предыдущая версия .
Re[23]: Реальная производительность WebAssembly?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.09.17 15:23
Оценка:
Здравствуйте, CoderMonkey, Вы писали:


CM>Нет. Моя мысль — по возможности, исследовать не производительность встроенных функций, а производительность языка как такового.

Язык один производительность разная

http://rsdn.org/forum/dotnet/6808392.1
Автор: Serginio1
Дата: 13.06.17

http://rsdn.org/forum/dotnet/6738556.1
Автор: Serginio1
Дата: 28.03.17
и солнце б утром не вставало, когда бы не было меня
Re[29]: Реальная производительность WebAssembly?
От: alexzzzz  
Дата: 27.09.17 19:43
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ага, работает, подтверждаю. ) Кстати, но мне кажется, что всё же не совсем корректно сравнивать такие реализации, потому что в реальной жизни большинство программистов будет всё же использовать готовые функции. Так что я бы представил результаты всех этих наших измерений приблизительно так:

  Табличка
время заполнения массива, с помощью стандартных функций, мс время заполнения массива, с помощью ручного кода, мс
JS node 500 ?
Firefox 200 ?
C# normal 500 200
server 380 100
C++ 14 120 52
17 60 52
Boost 49 52

Новые циферки для таблички:

Total: 128 ms
Total: 86 ms
Total: 82 ms
Total: 81 ms
Total: 82 ms
GC: 7 6 6

  C#, один поток
using System;
using System.Diagnostics;

namespace QuickSort
{
    public class Program
    {
        public static void Main()
        {
            const int ARRAY_SIZE = 1000 * 1000;

            var watch = new Stopwatch();
            for (var i = 0; i < 5; i++)
            {
                GC.Collect();
                watch.Restart();

                var vals = new TestStruct[ARRAY_SIZE];
                for (int j = 0; j < vals.Length; j++)
                {
                    vals[j] = TestStruct.Create();
                }

                watch.Stop();
                Console.WriteLine($"Total: {watch.ElapsedMilliseconds} ms");
            }
            Console.WriteLine($"GC: {GC.CollectionCount(0)} {GC.CollectionCount(1)} {GC.CollectionCount(2)}");
            Console.ReadLine();
        }
    }

    internal unsafe struct TestStruct
    {
        public string id;
        public string value;
        private static readonly Random random = new Random();

        public static TestStruct Create()
        {
            TestStruct item;
            item.id = GenerateRandomNumber();
            item.value = GenerateRandomNumber();
            return item;
        }

        public override string ToString() => id;

        private static string GenerateRandomNumber()
        {
            int num = random.Next(100_000_000);
            var result = new string('0', 10);
            fixed (char* p = result)
            {
                *(p + 2) = (char)('0' + num % 10); num /= 10;
                *(p + 3) = (char)('0' + num % 10); num /= 10;
                *(p + 4) = (char)('0' + num % 10); num /= 10;
                *(p + 5) = (char)('0' + num % 10); num /= 10;
                *(p + 6) = (char)('0' + num % 10); num /= 10;
                *(p + 7) = (char)('0' + num % 10); num /= 10;
                *(p + 8) = (char)('0' + num % 10); num /= 10;
                *(p + 9) = (char)('0' + num);
            }
            return result;
        }
    }
}

Бинарник и конфиг: https://bitbucket.org/alexzzzz/perftest/src/b2dd6d126cd5e6656a2dbaaa86bbf830c66ba69b/Random_Optimized3/bin/Release/
Re[46]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 28.09.17 19:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


Быстрый и простой тест. Что конкретно тебе здесь непонятно? Незнакомые буквы, слишком сложные слова?

>Ты видишь фикс, но не можешь его минимально проверить ? Или тебе непонятно, что у тебя там происходит ? Задавай нормальные вопросы, глядишь, получишь нормальные ответы.


Я вижу "фикс", но не вижу его необходимости. Ты можешь ее продемонстрировать или будешь и дальше балаболить?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[28]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 28.09.17 19:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Надо объяснять, что вставить в file.js ?


Ага. И попробуй дать код, который хотя бы не вылетает с ошибкой.

I>Надо объяснять, как запустить хром, вызвать DevTools и что такое консоль ?


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

A>А что с потреблением памяти? Можно оптимизировать не на скорость, а на потребление памяти. Хотя довольно часто одно автоматически тащит за собой другое. Иногда, правда, наоборот.


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

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


CM>Быстрый и простой тест. Что конкретно тебе здесь непонятно? Незнакомые буквы, слишком сложные слова?


Мне неизвестны методы и критерии сравнения. Я задал прямые вопросы и ты нигде не дал ни одного ответа.

>>Ты видишь фикс, но не можешь его минимально проверить ? Или тебе непонятно, что у тебя там происходит ? Задавай нормальные вопросы, глядишь, получишь нормальные ответы.


CM>Я вижу "фикс", но не вижу его необходимости. Ты можешь ее продемонстрировать или будешь и дальше балаболить?


Для тебя стараться нет никакого желания. Ты клянчил портирование в JS, а когда получил его, начал кидаться дерьмом. На кой ляд мне тебе помогать, объясни внятно ?
Re[29]: Реальная производительность WebAssembly?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.09.17 10:18
Оценка: :)
Здравствуйте, CoderMonkey, Вы писали:

I>>Надо объяснять, что вставить в file.js ?


CM>Ага. И попробуй дать код, который хотя бы не вылетает с ошибкой.


То есть, ты за две недели не смог const на var или let переделать ?
Или две недели не мог взять обновленный код из сообщения ?
Выходит, твои обвинения были не просто голословны, а вообще враньё, ибо ты не смог ничего запустить ?

Ты внятно изъясняться умеешь ? По факту ты только орешь, что где то чтото не работает. Я вот только что взял код из сообщения, вставил в хром — всё палит. Ты похоже не способен ни проблему описать, ни даже клипбордом пользоваться

I>>Надо объяснять, как запустить хром, вызвать DevTools и что такое консоль ?


CM>Почему именно хром и нод, а не firefox?


Движок v8 доминирует среди себе подобных, а фокс это вымирающая платформа. v8 есть не просто везде, он почти везде доминирует.
Re[48]: Реальная производительность WebAssembly?
От: CoderMonkey  
Дата: 29.09.17 15:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


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

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


Ты и так никогда ничего не объяснял. Зачем начинать?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.