LINUX.ORG.RU

Benchmark game имени ЛОРа

 , ,


0

3

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

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

★★★★★

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

Потому что SciPy является открытой многофункциональной библиотекой.

Если для решения тестовой задачи ты напишешь библиотеку на Си для своего языка, которая позволит решить соответствующий класс задач быстрее, то все пользователи языка только выиграют.

Единственное требование — синтаксис использования библиотеки должен быть органичным для языка (то есть идентификаторы и имена функций в том виде, как принято в языке; если в языке сборщик мусора, то никаких явных освобождений памяти; если в языке есть рефлексия, то адекватное с ней взаимодействие, а не «alien pointer» вместо типа).

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

В конце концов, ты можешь написать с использованием SciPy, но в описании сообщить, что ты иностранный агент читер.

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

господа, давайте лучше сделаем LOR более жизнерадостным. строгость конечно хорошо, но может немного отойти от этого. Есть же на этотм ресурсе хорошие стилисты? может что порекомендуют. думаю что это будет полезнее

Assembler
()

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

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

Будет ещё один benchmark game, который никому не нужен.

Вот в этом и вопрос. Деление библиотек на стандартные/нестандартные достаточно произвольное. В результате C++/JVM/.Net получают преимущество из-за того, что там уже куча заоптимизированных алгоритмов (главное, исходники не смотреть, они страшные). А какой-нибудь Common Lisp не может использовать даже cl-async и bordeaux-threads (что заставляет или использовать функции конкретного компилятора или забыть о многопоточности).

В принципе, можно взять исходники из libstdc++ и один-в-один переписать на другие языки. Формально не будет ни ассемблерными вставками ни использованием сишных библиотек. Но получим абсолютно нечитаемый тестовый пример.

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

mmap можно использовать? А то у товарищей с The Computer Language Benchmarks Game в своё время подгорело от того, что царь их всех обогнал одним mmap-ом.

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

mmap можно использовать?

Кстати, хороший пример «стандартной библиотеки». В glibc он входит:

$ dpkg -S /usr/include/x86_64-linux-gnu/sys/mman.h
libc6-dev:amd64: /usr/include/x86_64-linux-gnu/sys/mman.h

А почти во всех остальных языках только во внешних библиотеках типа https://hackage.haskell.org/package/mmap. Получаем значительное преимущество на ввод-вывод для тех, кому повезло со стандартной библиотекой.

monk ★★★★★
()

если пригорело, то бери розетту и фигачь бенчи…

MKuznetsov ★★★★★
()

Обсуждали уж много раз - поднять свой клон benchmark game - там уже есть кое-что для начала :)

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

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

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

Нет, очевидно. Ни в какое glibc он не входит. У тебя его нет не потому, что он куда-то там не входит. Что тебе мешало его добавить? Правильно, потому что тебе нужно добавлять не ммап, а менять методичку. Потому что ммап не налезает на иммутабельность, на vm твоей скриптухи и прочее.

В си же это просто обёртка вокруг syscall, которая пишется в одну строку и никакая либа ненужна.

А у тебя это просто ffi с си, а так же костыли взламывающие твою скриптуху. У тебя нет никакой поддержки mmap, зачем ты врёшь? Даже в либе.

anonymous
()
Ответ на: комментарий от beastie

Это там, где дошколята, чтобы победить меня, поменяли правила? Да, именно так поступили и в другом месте. Дошколята все одинаковые. Не могут, поэтому мы в крысу задним числом изменим правила.

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

Далее это позорище начало менять условия задачи ещё больше. Кому не лень может восстановить хронологию.

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

это мало что даст без переписывания всех ./configure

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

В си же это просто обёртка вокруг syscall, которая пишется в одну строку и никакая либа ненужна.

Только никакого syscall в C нет. А есть вставка ассемблерного кода. С таким же успехом можно этот код вставить в любой другой язык программирования с FFI, если вдруг libc недоступна.

monk ★★★★★
()

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

Почему просто не использовать готовые бенчмарки этих же игровых движков?

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

Что будет показывать такой бенчмарк? Это равносильно тестам детских наборов инструментов на деталях из их комплекта. Только в реальной жизни толкуот них никакого.

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

но мне как человеку который знает только C что делать?

Если я правильно понял задумку ТСа, ты вполне можешь написать полностью реализацию на Си и сравнивать её с остальными.

Ограничение «без читов в виде ассемблерных вставок и сишных библиотек» было нужно для того, чтобы говоря (например) о Go, с другими языками сравнивали именно код на Go, а не на Go+C.

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

Если я правильно понял задумку ТСа

👍

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

Там же про железо, а не языки программирования.

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

Что-то ты совсем поплыл. syscall есть в си, потому как в си есть asm. В любом случае это смысла не имеет, потому как понятно почему в «си» нет syscall.

А вот почему у тебя его нет - непонятно. Почему ты врёшь о поддержке mmap, которой у тебя нет.

С таким же успехом можно этот код вставить в любой другой язык программирования с FFI, если вдруг libc недоступна.

Нет такого успеха. Тебе уже сообщили, что не ври, что у тебя есть какая-то поддержка mmap. У тебя есть ffi с си, а перепаста си-кода никак не избавит тебя от этого.

А то в mmap не можешь, в память не можешь. Ни во что не можешь, но начинаешь рассказывать какие-то сказки про «просто в стандартной либе нет».

anonymous
()

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

Зачем их придумывать, можно взять все те известные.

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

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

В контексте предлагаемого это очень легко решается. Просто допускаем к использованию только нативную реализацию непосредственно в программе. Исключение только для заранее оговоренных функций ввода-вывода (по запросу автора можно разрешать что-то ещё не связанное с решением задачи).

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

потому как в си есть asm

Ты наркоман? asm какого процессора есть в Си?

syscall есть в си … потому как понятно почему в «си» нет syscall.

Без комментариев.

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

Просто допускаем к использованию только нативную реализацию непосредственно в программе.

Тогда SBCL зарулит. В нём можно компилятор под конкретную программу дописывать (и формально это не ассемблер).

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

Ты наркоман? asm какого процессора есть в Си?

Любого.

Без комментариев.

Опять позорище проигнорировало несостоятельность своих потуг. Ну и да, смотрим на уровень этого клоуна:

syscall есть в си … потому как понятно почему в «си» нет syscall.

си «си»

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

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

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

Ты вроде уже дописывал и опозорился. Чего не дописал? При этом опозорился не просто в чём-то реальном, а в подложной задаче, которую сам же(либо сосед-фанатик) подобрал под скриптуху.

anonymous
()

Привет. По поводу кино, посмотри «Одержимость»: https://m.imdb.com/title/tt2582802/

В нужную тему ответить не вышло, поэтому приношу свои извинения с ответом прямо здесь.

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

asm какого процессора есть в Си?

того, в код которого си компилируют

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