LINUX.ORG.RU

Benchmark game имени ЛОРа

 , ,


0

3

По мотивам соседней темы про производительность Go, SBCL и чего-то ещё.

А давайте запилим свой benchmark game с блекджеком и девицами? Честный бенчмарк, без читов в виде ассемблерных вставок и сишных библиотек. Надо только придумать относительно простых задачек на числа, строки, списки, память и пр., и открыть репу на житхабе. Вот сделали же как-то лорквест на разрезание строки, было прикольно.

★★★★★

Последнее исправление: Puzan (всего исправлений: 1)
Ответ на: комментарий от t184256

Строгий гласз народа будет следить и закидывать ссаными тряпками читеров, как это принято на ЛОРе :)

Puzan ★★★★★
() автор топика
Последнее исправление: Puzan (всего исправлений: 1)

без читов в виде ассемблерных вставок и сишных библиотек

А какой смысл?
Давайте уж бенч в виде реальной задачи

devl547 ★★★★★
()
Ответ на: комментарий от fernandos

Сделать репу, люди будут пушить, скрипт запускать тесты. Я, правда, не силён с CI, но тут есть знающий народ. Можно, например, для каждого теста сделать мейкфайл с целями make, clean, test.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от fernandos

Ну это как народ захочет. На житхабе наверное у большинства аккаунты уже есть

Puzan ★★★★★
() автор топика
Ответ на: комментарий от Puzan

Можно было бы простой скрипт, который бы запускал поочерёдно тесты и заносил результаты, потом их отправлять, а там считать среднее.

Я, правда, не силён с CI,

Да, нужен кто-то, кто разбирается в этом.

fernandos ★★★
()

числа, строки, списки, память

без читов в виде ассемблерных вставок и сишных библиотек

Без ассемблерных вставок и сишных библиотек это понятно, но мне как человеку который знает только C что делать? Просто свой код писать можно или я иду лесом?

reprimand ★★★★★
()
Ответ на: комментарий от fernandos

Тестировать наверное лучше на одном компе. Могу даже свой выделить, какой-то Зион с 32ГБ

Puzan ★★★★★
() автор топика

без читов в виде … и сишных библиотек

С и C++ баним сразу?

Надо только придумать относительно простых задачек на числа, строки, списки, память и пр., и открыть репу на житхабе.

RosettaCode в помощь. Там и реализации не задроченные на производительность есть.

monk ★★★★★
()
Ответ на: комментарий от fernandos

Настройки можно конечно, jit, опции компилятора. Главное чтобы код был без читов и в стиле, принятом для этого языка. Т.е. не писать на лиспе командами ассемблера в скобочках.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от monk

С и C++ баним сразу?

Не, голый С со стандартной библиотекой - это норм.

Puzan ★★★★★
() автор топика

А какой смысл в этой фалометрии?

EugeneBas ★★
()
Ответ на: комментарий от fernandos

Так вот вопрос полезности измерения скорости в его практичности. И в этом смысле я бы разрешил numpy (в виде отдельного диалекта языка). Но запретил бы прямое использование ffi.new(«mpz_t»).

monk ★★★★★
()
Ответ на: комментарий от monk

Так вот вопрос полезности измерения скорости в его практичности. И в этом смысле я бы разрешил numpy (в виде отдельного диалекта языка).

Не, использование numpy - это измерение производительности fftw. Понятно, что на всех языках оно будет примерно одинаково

Puzan ★★★★★
() автор топика
Ответ на: комментарий от monk

Выключен.

jit нужен для вычислений, рнр часто используется в вебе, там нет сложных вычислений, jit не нужен, может даже немного мешать.

Это разработчики планируют выводить РНР из веба.

fernandos ★★★
()
Ответ на: комментарий от Puzan

Ну так регаешь свой гитлаб ранер, который будет уже запуски делать того, что напушили. Всё как раз и получается, как надо)

evgeny_aa ★★☆
()
Ответ на: комментарий от monk

Тогда выйдет, что мы не измеряем производительность самого питона (в данном случае), а измеряем С. С другой стороны, такая библиотека есть, можно и с ней протестировать.

Вот чтобы я сделал, так это сравнил производительность спитона и руру.

fernandos ★★★
()
Ответ на: комментарий от evgeny_aa

Вот решил сначала обсудить. А то запилю, а вы мне скажете, что говно, и надо было делать по-другому :)

Puzan ★★★★★
() автор топика

Уже занимались такой фигнёй:

Код-инжекшены в убогом питон (комментарий)

А ниже ещё рекурсией Фибоначчи в много проходов. Просто потому, что это самое простое чем можно нагрузить проц, что мне в голову пришло, и что легко пишется на любом языке 1 к 1.

Ещё клэмпили что-то в другом треде, но всё на плюсах.

Тут нужен репозиторий с Dockerfile, чтобы каждый мог одной командой все (либо только интересующие) тесты сразу запускать.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Тут нужен репозиторий с Dockerfile, чтобы каждый мог одной командой все (либо только интересующие) тесты сразу запускать.

Тоже хорошая идея.

fernandos ★★★
()
Ответ на: комментарий от fernandos

Тогда выйдет, что мы не измеряем производительность самого питона (в данном случае), а измеряем С.

Так внизу почти у всех языков C. Если учитывать системные вызовы, то в случае Linux вообще у всех.

Задача ведь не определить эффективность ассемблерной кодогенерации, а определить эффективность решения класса задач на данном языке.

monk ★★★★★
()
Ответ на: комментарий от Puzan

Слушай, а можно и реальную.

Одна у меня уже даже есть: простейший веб-сервер, сабсет HTTP/1.0 с кешированием и без по флагу. Тестить можно с помощью wrk.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от monk

Так внизу почти у всех языков C.

У интерпретаторов/компиляторов да, но не у библиотек.

Задача ведь не определить эффективность ассемблерной кодогенерации, а определить эффективность решения класса задач на данном языке

Да? Ну ок. Я бы действительно посмотрел на эффективность работы интерпретатора/компилятора.

fernandos ★★★
()
Ответ на: комментарий от monk

определить эффективность решения класса задач на данном языке.

Ну это может вылиться в just_do_it(). Интересно использование конструкций языка, как мне кажется.

Ну или сделать два теста - один на фреймворках, другой на чистом языке, если хочется сравнить.

Puzan ★★★★★
() автор топика
Последнее исправление: Puzan (всего исправлений: 2)
Ответ на: комментарий от fernandos

У интерпретаторов/компиляторов да, но не у библиотек.

Найдёшь библиотеку, где puts/print/display/… в конце концов не вызывает write(2) ?

Я бы действительно посмотрел на эффективность работы интерпретатора/компилятора.

Так компилятор зачастую подставляет вызовы тех же сишных библиотек. Например, guile использует libgmp при компиляции. А в сишных программах тогда надо запрещать glibc, который наполовину на ассемблере в виде интринсиков.

monk ★★★★★
()
Ответ на: комментарий от monk

Так компилятор зачастую подставляет вызовы тех же сишных библиотек

И всё равно он может работать как быстро, так и медленно. Интересно, как быстро будет решена задача без использования дополнительного уровня абстракции.

fernandos ★★★
()
Ответ на: комментарий от monk

Стандартные библиотеки можно использовать, они часть языка. Например, в жаве огромная библиотека в jre, но это часть языка. Как и libc. Вот numpy - не часть языка. Когда ставишь питон, у него нет numpy

Puzan ★★★★★
() автор топика
Ответ на: комментарий от Puzan

Ну это может вылиться в just_do_it(). Интересно использование конструкций языка, как мне кажется.

Где кончаются конструкции языка и начинаются библиотеки? std::ranges в С++ это ещё конструкция языка или уже фреймворк? А CLOS в Common Lisp? В C# можно использовать .Net? А в питоне SciPy?

monk ★★★★★
()
Ответ на: комментарий от Benis

А зачем?

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

Puzan ★★★★★
() автор топика

А может предложить, чтобы задачи, которые решаются сторонними библиотеками, использующими отличный от испытуемого ЯП, были дополнительно переписаны на этот же ЯП?

fernandos ★★★
()
Ответ на: комментарий от monk

Где кончаются конструкции языка и начинаются библиотеки?

Ну вот ты поставил в условном дебиане gcc, и всё, что по ставилось к нему в зависимости, можно использовать. CLOS - это часть SBCL. SciPy - не часть питона.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от monk

Иначе можно просто написать библиотеку на C, и вызывать её из любого языка. Раз SciPy можно, почему нельзя мою библиотеку?

Puzan ★★★★★
() автор топика
Ответ на: комментарий от fernandos

Ну если эта задача будет нужна для теста, то конечно, так и надо.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от Puzan

Когда ставишь питон, у него нет numpy

Есть. Ставить из https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh

P.S. Или можем считать анаконду отдельным языком.

Как и libc.

То есть glib использовать нельзя?

А unistd.h? В glibc он есть, а в MSVC libc нет.

monk ★★★★★
()
Ответ на: комментарий от Puzan

всё, что по ставилось к нему в зависимости, можно использовать

libgmp10 (>= 2:5.0.1~), libisl19 (>= 0.15), libmpc3, libmpfr6 (>= 3.1.3), libstdc++6 (>= 5), zlib1g

???

monk ★★★★★
()
Ответ на: комментарий от monk

Или можем считать анаконду отдельным языком.

Да

То есть glib использовать нельзя?

Нет

В glibc он есть, а в MSVC libc нет.

Gcc vs msvc

Puzan ★★★★★
() автор топика
Ответ на: комментарий от monk

Ну если он без этого не работает, то наверное можно. В любом случае, это обсуждаемо.

Puzan ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.