LINUX.ORG.RU

Clasp, одна из новых реализаций CL, всего лишь в четыре раза медленнее, чем C++

 , , , ,


4

3

Новая реализация компилятора CClasp, базирующегося на Cleavir от Robert Strandh, без оптимизаций, всего лишь в четыре раза медленнее, чем C++. Ожидается, что с добавлением вывода типов производительность генерируемого кода с CClasp, должнo еще прибавить в скорости выполнения.

В приведенной таблице, также есть сравнение производительности генерируемого кода с SBCL (еще одна из активных реализаций CL) и Python.

Основной особенностью Clasp, среди других реализаций Common Lisp, является тесная интеграция с C++ и использование LLVM.

Подробности: https://drmeister.wordpress.com/2015/07/30/timing-data-comparing-cclasp-to-c-...

Ответ на: комментарий от Oxdeadbeef

Т.е. у вас в идельном мире компилятор сам догадывается, что дебажные символы и некое safety генерировать именно для этой функции не нужно? И что тут тип должен быть именно unsigned?

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

Ага, это здоровый интерес. Забавно наблюдать за выживанием лисперов.

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

приличных языках есть стек

Это в C++ чтоле?

а не только ссылки на них

clhs declare (dynamic-extend)

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

то что мертво умереть не может

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

И зачем это? Ты как ребенок радуешься, что лисп оказался всего-то в 4 раза медленнее. А это, между прочим, ой как дохера. Люди борются за процентное увеличение быстродействия, а тут 4 раза!

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

А си++ часто используется по делу?

Думаю, тут тяжело будет статистику подвести. Х его, как говорится, З.

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

Можете не отвечать, сходил по ссылке.

Да и тогда бы вывод типов от SBCL был, а его ещё пока нет.

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

Ты как ребенок радуешься, что лисп оказался всего-то в 4 раза медленнее.

Я радуюсь какому то ни было прогрессу.

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

И зачем это? Ты как ребенок радуешься, что лисп оказался всего-то в 4 раза медленнее.

Вы верите в объективность синтетических тестов? Тогда внимательно прочитаем таблицу ещё раз и возрадуемся, что лисп оказался быстрее на ЦЕЛЫХ ДВАДЦАТЬ ПРОЦЕНТОВ и срочно выкидываем сишечку в окно.

Кроме того, в энтерпрайзе сейчас почему-то используется куча языков, которые в десятки раз «slower than C».

Gentooshnik ★★★★★
()

Этот тест применим только для алгоритмов с простой целочисленой (fixnum) арфметикой использующих +,-,<,=,>,fboundp. Пока только эти операции будут достаточно быстрыми. Код который использует другие операции будет работать намного медленее, до тех пор пока я все не доделаю.
CCLASP прошел долгий путь став медленее C++ всего в 4 раза вместо сотен раньше.

Основной особенностью Clasp, ... использование LLVM.

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

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

Кроме того, в энтерпрайзе сейчас почему-то используется куча языков, которые в десятки раз «slower than C».

Потому, что там не нужен C. Очевидно же. Некоторым почему-то очень трудно понять, что разные языки используются для разных задач.

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

Кроме того, в энтерпрайзе сейчас почему-то используется куча языков, которые в десятки раз «slower than C».

Ну да, bash, например, тот же awk и т.п. И почему люди не пишут скрипты на C?

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

Кроме того, в энтерпрайзе сейчас почему-то используется куча языков, которые в десятки раз «slower than C».

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

Solace ★★
()

Этот ботаник формалином надышался и теперь его штырит. На фига сюда этого утырка-то тащить, тут и своих недоумков хватает.

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

Clasp был приведен как возможность легко интерфейсится с плюсовыми либами и выступать в виде ядра бизнес логики.

чем тогда он отличается, к примеру, от Python, количеством скобок?

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

статическая типизация и ООП.

ооп в лиспе есть, а что - к нему нельзя приделать статическую типизацию? Что именно мешает? Вроде можно. Можно даже отказаться от вывода типов и заставить лисперов хинтами или еще как-то точно указывать даже промежуточные типы...

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

а что - к нему нельзя приделать статическую типизацию?

В CL нет статической типизации, она там не нужна. Но если компайлер умный, или с помощью хинтов, компилятор сможет оптимизировать код и/или выбросить ошибку в compile-time — это детали реализации. SBCL более близок/стремится к описанным фичам.

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

всего лишь в четыре раза медленнее, чем C++
всего лишь

Не нужно.

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

например, глянь вот статью лафсана: http://habrahabr.ru/post/230619

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

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

а по поводу статической типизации, ну её нет, но что мешает самому прикрутить?

Так я её и имел в виду.

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

А нормального гуя в свободные реализации CL так и не завезли...

Emacs. Заплатившие 5к за коммерческую лицензию LW всё равно в Емаксе сидят.

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

Тащить это на ЛОР и не упоминуть что в данном тесте SBCL обогнал C++ ?!!

а вы бы в C++ еще чаще использовали визиторы и всякую околдинамическую фигню, он так скоро медленней питона станет =)

намякиваю на: Бьёрн Страуструп выбирает борщ: «С++ почти так же быстр как Haskell»

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

Нормальный гуй к емаксу лиспу, наверное, можно сделать на Jetbrains MPS с минимальными затратами... Но кто же этим будет заниматься? Вот ты будешь?

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

ого, рскудахтался. врпoчем, как обычно

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

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

Где нет ООП, в Common Lisp'е-то? Это его в C++ нет, если сравнивать с общелисповскими CLOS/MOP.

Средств борьбы со сложностью в CL опять-же больше. Я писал на обоих языках, в CL проще.

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

Тоже что ли путаешь гуй с IDE? Ну и там по ссылке жаба. Для лиспа на жабе (ABCL) такая проблема не стоит — можно свинг, свт и жабафх напрямую дергать.

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

а, вот ты о каком гуе... Ну просто стучись к свингу через clojure или abcl. Там же в лиспе как эта.. гомо..фобия процветает? Должно быть удобно писать внешнее апи для гуя, и потом юзать его из другого лиспа, не?

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

Что именно мешает?

Хотя бы то, что вводя статическую типизацию ты делаешь вполне валидные программы невалидными(с точки зрения системы типов).

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

Это ботаник-то, накурившийся формалина?

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

Там все не очень хорошо с инкапсуляцией.

Да, там дженерики. Дженерики хорошо прячутся в пакеты (неймспейсы), если инкапсуляция нужна.

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

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

Средств борьбы со сложностью в CL опять-же больше

Без статической типизации говорить вообще не о чем - одна болтовня. Собственно, в реальной жизни мы и не наблюдаем лисп нигде, кроме очень специфических областей, где на нем решается очень ограниченный круг задач.

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

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

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

Дженерики хорошо прячутся в пакеты (неймспейсы), если инкапсуляция нужна.

Что делать в ситуации:

(defpackage #:A
  (export #:A #:foo))
(in-package A)

(defclass A ...)
(defgeneric foo ...)

(defmethod foo ((A A) x ...)
....

у другого программиста

(defclass #:B (:use #:A) ...)

(in-package #:B)

(defmethod foo ((A A) (x fixnum)) ...)

;; использует особое поведение для целых чисел

у третьего программиста

(defclass #:C (:use #:A) ...)

(in-package #:C)
(foo (make-instance 'A:A) 3) ; результат зависит от того, загружен ли в текущий образ пакет B.

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

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

Ну так напиши и покажи что это вообще возможно. Я вот могу ткнуть в http://emias.info/ или http://zakupki.gov.ru/, или в похожие по сложности проекты на C++, которые в паблик не торчат, но вполне себе существуют и работают. Да тот же браузер, которым ты пользуешься, написан вовсе не на CL, хотя, казалось бы, что может быть лучше для работы с DOM?

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

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

Надо же, а мужики то и не знали. Только вот почему-то, в прошлом веке любое сколько-нибудь сложное приложение было написано либо на лиспе либо на смолтоке. Весь 21 век — это неуклюжие попытки переписать с помощью стада баранов тот сложный софт на другие, *более быстрые* *статически типизированные* ЯП. Разработка же сложных приложений непосредственно на этих ЯП — это вообще оксюморон.

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

Например тому анонимусу, которому я отвечал, да.

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

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

Нет.

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

Только вот почему-то, в прошлом веке любое сколько-нибудь сложное приложение было написано либо на лиспе либо на смолтоке.

O RLY?

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