Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 34 35 36 37 38 39 40 41 [42] 43   вперед  Ctrl
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Давайте неоптимизирующие пометим в табличке символом (*) например.
19 янв 19, 19:11    [21789339]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
mayton
Давайте неоптимизирующие пометим в табличке символом (*) например.

Ты как человек прикладной, не улавливаешь идеи.

Вот смотри, например по графику по АйКью - есть разделение - есть обычные люди, есть гении и имбецилы.
Но нормируют почему то не по имбецилам (который мат.минимум).

Так и тут - есть просто компиляторы, есть хорошие компиляторы, есть интерпретаторы и еще жит.
Вот и я предлагаю нормировать (1.0) по просто компиляторам.
Можно выбрать любой.
19 янв 19, 22:47    [21789432]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
Можно взять другую базовую точку - интерпретатор шитого кода (байт-кода).

Но она примерно в 100 раз медленнее и будет неудобной.
19 янв 19, 22:57    [21789438]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 5107
Siemargl
для х86 нет вариантов - просто нет операций сложить память с памятью, можно только регистр с памятью итп

та были варианты, например через 1 регистр пропускать каждую операцию

хотя согласен, спор пустой - что вчера было верхом оптимизации сейчас даже за оптимизацию не считают
20 янв 19, 12:44    [21789577]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Давайте поступим проще.

Сохраним старую процентную шкалу. Классический исходник гекберта будет 100%.
И просто добавим ещё одну колонку в безразмерных величинах от 0.0 до 1.0 по формуле что я предложил.
20 янв 19, 16:18    [21789703]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Updates.

1) Потратил несколько часов времени на TypeScript. Понял пока что это типобезопасная надстройка над JavaScript. Забил.
Если у кого есть что добавить по сабжу - прошу.

2) В продолжение ссылки 21805196. Факт native компилляции в браузере я-бы проверил. И готов был написать
бенчмарк. По старой памяти я помню что какой-то добрый чел сделал для нас реализацию на Node.JS. Ее можно
портировать в веб-страничку и добавить сверху моих слабых знаний в области рисования на Canvas. И вуаля - у нас
бенчмарк который работает в браузере.

Я по старой памяти считал что там работает просто интерпретатор байткода JS-машины.

3) Я не понял почему каталог /js создан под node.js. Перименовал.

4) Первый эксперимент с web-assembly у меня не взелетел. Репозитарий Ubuntu содержал ссылку
на морально устаревший компиллятор. Существуют более новые вне репозитария убунт но их надо качать
и ставить отдельно.

# apt install emscripten
# $ emcc --version
 #emcc (Emscripten GCC-like replacement) 1.22.1 ()
#Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
#This is free and open source software under the MIT license.
#There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

emcc hello.c -o hello.html

Если у кого есть идеи по реализации нашего теста на WASM - велкам. Я готов заводить ticket а это дело.

4) Scala проект по прежнему лежит в экспериментальной ветке и в разваленном состоянии. Руки не доходят
фиксить а жаль. Меня заинтересовал проект Scala-native где мы должны по идее получать эффективный код на уровне clang
и я хотел это проверить.

Тоже создам тикет.

5) Проекты Хаскель и Эрланг для данного топика КМК не имеют перспективы и я их планирую грохнуть.

6) Мои мечты о красивом полиграфическом отчоте в PDF пока остались мечтами. Причем я имею в виду 100%
автоматизацию их получения. Тоесть ... к примеру накатился очередной релиз на GoLang - перезапустили
главный шел-скриптик. И получили готовый документ с табличкой.
15 фев 19, 00:42    [21810094]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
mayton,

wasm - залипуха - забей,

а компиляция из любого языка с нестрогой типизацией - это просто будет интерпретатор с проверкой типа на каждую операцию - так что из js - в натив это фантастика (ну почти)
15 фев 19, 00:53    [21810096]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Siemargl
mayton,

wasm - залипуха - забей,

а компиляция из любого языка с нестрогой типизацией - это просто будет интерпретатор с проверкой типа на каждую операцию - так что из js - в натив это фантастика (ну почти)

Чо залипуха? Я-б браузерный майнер запилил :)
15 фев 19, 00:59    [21810100]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 719
автор
Если у кого есть идеи по реализации нашего теста на WASM - велкам.

emcc пока хромает на обе ноги.
Так что лучше воспользоватся онлайн компиляторами.
Самый простой способ это использовать [url=]https://wasdk.github.io/WasmFiddle/[/url] там все уже настроено

автор
а компиляция из любого языка с нестрогой типизацией - это просто будет интерпретатор

WASM тем и интересен что это не код для JS интерпретатора а отдельный бинарник который исполняется на отдельной стековой vm данными обменивается через буфер в памяти. Так же есть экспорт функций в обе стороны через __stdcall ну или любое другое удобное соглашение о вызовах.

WASM очень молодая и очень интересная технология уже реально работает везде реализация VM написана на С без зависимостей и прикручивается к чему угодно в пару кликов.
Пробовал тестировать пощупать WASM по ощущениям примерно в полтора два раза медленнее с/c++ но на 15-40% быстрее c#.
Сложно сравнивать теплое с мягким у них разные технологии по исполнению, разные стратегии по созданию освобождению памяти. Похоже сборщик мусора в C# не бесплатный зато выстрелить себе в ногу или ближайшему окружению почти невозможно. WASM быстрее C# и исполняется в отдельной песочнице.
Поигрался с WASM VM на на микроконтроллере ESP32 где несколько VM переписывали мозги друг другу. в целом работает. Жутко интересно и жутко не хватает времени со всем этим поиграться.
Из минусов это молодость технологии сложно найти хорошую документацию или хотя бы достоверную все нужно искать в обсуждениях на гугловских форумах.
Недописанные компиляторы пол дня потратил прежде чем понял что в std math объявления некоторых функций есть а реализаций нету.
При отладке у тебя есть инструкция вызвавшая исключение глаза и 5к байт вокруг. =(

Компиляция JS в нативный код это отдельная песня и к WASM никакого отношения не имеет. Но в целом да V8 умеет перекомпилировать свой исполняемый байткод (часто вызываемые функции) в ассемблер целевой платформы с оптимизацией под конкретный процессор и его набор инструкций. Но там целая куча не очевидных нюансов с размещением данных и работой сборщика мусора. Высокий уровень абстракций дорого обходится для JS но это мало кого волнует на 16ти ядерных процессорах с 32гб оперативки =).
15 фев 19, 13:13    [21810530]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
alex55555
Member

Откуда:
Сообщений: 2129
Малыхин Сергей
Высокий уровень абстракций дорого обходится для JS

Уровень примерно как и у Java, ну может чуть замороченней, но не принципиально. В натив компилировать Java проблем нет, откуда такие проблемы возьмутся у JavaScript? Ну а компиляция в Java-байткод (который потом уже JIT-ом в натив превращался) реализована уже лет 10-15 назад. И опять же - никакие уровни абстракции этому не помешали.
15 фев 19, 15:02    [21810746]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
alex55555
Member

Откуда:
Сообщений: 2129
mayton
Факт native компилляции в браузере я-бы проверил. И готов был написать
бенчмарк.

Браузером сложно управлять в плане включить/выключить эту оптимизацию. Но вот отдельные JS движки вполне управляемы. Я как-то с древним rhino возился, так он давно в Java-байткод всё преобразует, и эту фичу можно отключать. Со включенной и выключенной фичей можно получить наглядную разницу в производительности. При этом в тестах нужно делать кучу циклов "для прогрева", то есть что бы Java-JIT понял, что это горячее пятно (hot spot), которое надо компилировать в натив. И только после прогрева запускать реальные тесты (с теми же циклами).
15 фев 19, 15:08    [21810757]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
alex55555
Малыхин Сергей
Высокий уровень абстракций дорого обходится для JS

Уровень примерно как и у Java, ну может чуть замороченней, но не принципиально. В натив компилировать Java проблем нет, откуда такие проблемы возьмутся у JavaScript? Ну а компиляция в Java-байткод (который потом уже JIT-ом в натив превращался) реализована уже лет 10-15 назад. И опять же - никакие уровни абстракции этому не помешали.

Ты слышал про динамическую типизацию?
15 фев 19, 15:09    [21810760]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
alex55555
Member

Откуда:
Сообщений: 2129
mayton
Ты слышал про динамическую типизацию?

А ты слышал, как она реализуется?

Там всё тот же объект, но чуть более универсальный. Именно чуть. Никакой магии. Ничего сложного. Так в чём же засада?
16 фев 19, 15:00    [21811613]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
alex55555
mayton
Ты слышал про динамическую типизацию?

А ты слышал, как она реализуется?

Там всё тот же объект, но чуть более универсальный. Именно чуть. Никакой магии. Ничего сложного. Так в чём же засада?

Давай я зайду с другой стороны. Зачем вообще типы данных? Ну или зачем они нужны в языках программирования
и зачем программисты их используют?
16 фев 19, 16:56    [21811690]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58417
Блог
mayton
Давай я зайду с другой стороны. Зачем вообще типы данных? Ну или зачем они нужны в языках программирования и зачем программисты их используют?

Ответ в принципе меняется в зависимости от года и языка программирования, но наиболее правильный, имхо, таков: "для ёмкой и наглядной записи действий с данными и отлавливания значительной части вносимых при этом ошибок на стадии компиляции".
16 фев 19, 22:51    [21811875]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Я прояснию свое видение.

Что дает статическая типизация программистам? Некие "законы" или "гарантии" того что данное ПО
что мы написали будет работать. И будет работать именно так а не иначе.

Типы данных - это самый главный базис на котором строится ЯП. Любая спецификация или стандарт
на ЯП начинается с перечисления типов данных которые язык поддерживает.

Вобщем для программиста система типов и в особенности статическая типизация - это гарантия
того что "всё будет хоршо". Как на уроках физики. Помните? Мы выводили размерность ответа. Еще не вычисляя цифр.
И если мы вычисляя размерность вдруг получали килограмм в квадрате - это означает что формула
ошибочна. Проверка типов в языке - это как проверка размерности.

Что такое типы данных с точки зрения оптимизирующего компиллятора. Это хинты. Дополнительные
подсказки которые говорят что здесь (в этом стеке вызовов или даже в этом дереве вызовов)
будет тип данных X и это даёт возможность провести до

Scala и Haskel к примеру очень пристально смотрят на типы и вообще не позволяют собрать код
где есть какая-то вольная интерпретация типа. Это одна из их главных черт.

И главное - какой эффект оказывает система типов на оптимизирующий компиллятор?
Чем сильнее типизация, чем она статичнее - тем эффективнее будет собран код.

Чем она слабее - тем код будет медленнее. Не может оптимизирующий компиллятор
создать быстрый код где на вход функции все время ожидается (object) вместо (int)
или (float) к примеру.

Языки динамической типизации в данном топике доказывают это предположение. Достаточно
посмотеть на цифры. Даже не беря во внимание прочие опции. Простое разделение ЯП на два
класса статически- и динамически- типизированных уже дает нам основания делать суждения
о производительности будущего кода.

Поэтому фраза
Там всё тот же объект, но чуть более универсальный. Именно чуть. Никакой магии. Ничего сложного. Так в чём же засада?

требовала прояснений.

Никакой магии. Ничего сложного. Но бенчмарк провален. Смотрите как ведет
себя NodeJS (относится к классу компилируемых с динамической типизацией)
в данном тесте.

NodeJS - 1 минута 30 секунд на моей конфигурации.
16 фев 19, 23:38    [21811902]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 719
автор
Там всё тот же объект, но чуть более универсальный. Именно чуть. Никакой магии. Ничего сложного. Так в чём же засада?

Объект это абстрактное понятие. процессор не может работать с абстрактными понятиями ему нужно точно знать сколько байт и с каких адресов перенести в регистры процессора как организовать стек перед тем как выполнить jmp и продолжить исполнение инструкций (типичный вызов функции).

Использование строгой типизации означает что компилятор/интерпретатор точно знает сколько и каких байт положить на стек и куда сделать переход.
В случае динамической типизации эту информацию нужно выяснить в момент исполнения и решить как исполнять код дальше в простых случаях вроде питона или пхп интерпретатор производит приведение типов к ожидаемым и только после этого размещает данные и делает переходы. JS реализации пытаются избежать проверки типа и его приведения к нужному. По этому вместо одной реальной реализации функции их может быть создано несколько одна работает с числами другая со строками и.т.д. просто потому что это гораздо выгоднее по скорости исполнения чем заниматься приведением типа на каждой итерации цикла.
17 фев 19, 02:22    [21811934]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
alex55555
Member

Откуда:
Сообщений: 2129
mayton
Никакой магии. Ничего сложного. Но бенчмарк провален.

Да, за дополнительные фичи нужно платить. Но здесь не такая адская разница, как можно было бы подумать. Например Java синяки ругают за кучу проверок (на null, на выход за пределы массива и т.д.), но эти все проверки обычно составляют очень и очень скромную часть от всего кода, поэтому суммарная производительность Java приложений может примерно совпадать с сишными, правда цена такого совпадения - переход на сишный стиль программирования с учётом влияния всех особенностей Java на производительность. Но переход на сишный стиль замедляет написание программы, чем повышает её стоимость, в том числе по части сопровождения (ошибки, доработки). Так же можно вообще сразу на си перейти. но - ещё больше ошибок, ещё дороже программа.

В общем на JS получаются не очень сильно отстающие по скорости программы. Плюс компиляторы учитывают реализацию JS объектов и замечают момент фиксации типа, чем сразу снимают массу вопросов. Может в сумме скорость всё же проседает, но не на много. Хотя да, если быть точным, то лишний десяток-другой процентов нужно замечать. Только в свете цены разработки эти проценты весьма мало интересны.
17 фев 19, 14:41    [21812075]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
тему лучше закрыть от флуда и почистить от алексов
17 фев 19, 19:39    [21812177]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
по крайней мере, пока алексы не смогут на деле побить мой результат, а не занимаются словоблудием....
17 фев 19, 19:40    [21812178]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Siemargl
по крайней мере, пока алексы не смогут на деле побить мой результат, а не занимаются словоблудием....

Ну... я-бы не стал зачищать. Мнение высказывать можно.

Но я занял ожидательную позицию и хочу чтобы господин alex55555 взял нашу задачу и продемонстрировал
нам "лишний другой десяток процентов" и момент "фиксации" типа. Со ссылкой на 21812075

Не зряж топик поднимал. Чо.
17 фев 19, 22:36    [21812289]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Siemargl
по крайней мере, пока алексы не смогут на деле побить мой результат, а не занимаются словоблудием....

Зяма. Круче тебя - только варёные яйца. Ну.... разве что в топик зайдет какой-то безумный
любитель Cuda и ассемблеров.

Но мне как-раз интересен сегмент середнячков. И языков платформеров C#/Java/Node. Споры о перформансе
обычно идут именно в этой весовой категории.

+
Хотя... кажется мы оговаривали где-то что решение на видеокарточке нам неинересно. Не языковая сфера.
18 фев 19, 00:59    [21812446]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
alex55555
Member

Откуда:
Сообщений: 2129
Siemargl
по крайней мере, пока алексы не смогут на деле побить мой результат, а не занимаются словоблудием....

А что там у тебя за результат? Ты сумел опустить производительность тобой созданного интерпретатора JS ниже плинтуса?

Я, вообще-то, говорил об отсутствии сложностей при компиляции JS, а ты тут про что развешиваешь?
18 фев 19, 13:46    [21812973]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
mayton,

есть тема топика. остальное - флуд.

если флуд интересный - можно форкнуть отдельную тему.

кстати про метрики - никто не мешает сделать 2 колонки - с базой от лучшего и с базой от gcc =O0
18 фев 19, 23:20    [21813768]     Ответить | Цитировать Сообщить модератору
 Re: Тяпничный бенчмарк CPU (part-1)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41805
Я согласен делать колонки. Но это будет в рамках эпики с новым автоматизированным отчотом.

Форкать отдельные темы я согласен. Форкайте сколько надо.
18 фев 19, 23:24    [21813773]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 34 35 36 37 38 39 40 41 [42] 43   вперед  Ctrl
Все форумы / Программирование Ответить