LINUX.ORG.RU

Оптимизации в Common Lisp

 , , , , оптимизации


1

7

Пропиарю свой доклад вобщем-то, в том числе тут, потому что почему нет.

https://www.youtube.com/watch?v=5T-XONZCptc&t=16157s

Парни на Fprog/Tbilisi позвали рассказать, ну я вобщем-то рассказал.

Лисп можно докрутить до оптимизаций круче C++ на самом деле.

★★★

Лисп можно докрутить до оптимизаций круче C++ на самом деле.

Да, можно порвать жопу, но зачем? Есть сишечка у которой с оптимизацией все замечательно из коробки, так и в чем же сакральный смысл оптимизации через страдания? Зачем, чтобы что и во имя чего?

anonymous
()

можно наверн и до ассемблерной оптимизации, но зачем ?? :)
язык высокого уровня не про оптимизация, а про полную отвлеченность от низовой работы с оптимальным выполнением программы.
програмист должон творить аки художникъ, а не впахивать аки каменщик на стройке !!111

п.с.: накину на вентилятыр :)

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

Как-то скучно, без огонька. Надо было Обезьяна в чат позвать 🤜🤛, порвали бы тусовочку. Ну и да, если подождать, пока стандарт распухнет еще больше, то станет еще легче обгонять типичный си-плас-плюс 😊.

Virtuos86 ★★★★★
()

Лисп можно докрутить до оптимизаций круче C++ на самом деле.

Да каеш, лол. Ещё скажи что на нём программировать можно.

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

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

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

Надо было Обезьяна в чат позвать

Ну, Ловсан нормально все рассказал и я бы точно не стебался и не мешал ему, всему свое время и место.

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

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

Комментаторы выше, которые недоумевают зачем это делать, не осознают что оптимизация по нескольким направлениям на выбор это МОЩЬ. Чтобы это понять надо столкнуться с HPC где сокращение инструкций проца дает ощутимый выигрыш во времени и деньгах.

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

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

почему эти простые оптимизации (рекурсия в цикл, инлайны и тп) не делает сам язык, как ocaml, haskell и сишка?

На вопросы из зала пусть отвечает докладчик :)

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

Есть сишечка у которой с оптимизацией все замечательно из коробки

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

Gentooshnik ★★★★★
()

Лисп можно докрутить до оптимизаций круче C++ на самом деле.

Всмысле на лиспе можно круче цикл написать (для подсчёта чисел Фибоначчи), чем на С++? Весь видос не смотрел, там 9 часов. Какие там конкретно примеры оптимизаций круче С++?

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

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

Потому что эти задачи в C++ уже в стандартную библиотеку зашиты. А в C стандартной библиотеки – кот наплакал, и каждый сишник пишет с нуля половину STL сам и таскает с собой копипастой в каждый проект.

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

MSVC

Ну так себе. Страдать с оптимизациями на уровне встроенного ассемблера имеет смысл либо на сервере (а там линупс), либо в библиотеках вроде кодеков или TLS (а там нет лиспов).

gaylord
()

С момента знакомства с Lisp’ом хочу lisp для совсем мелких однокристаллок. Типа всяких PIC10/12/16/18 и прочих ATTiny. Вот прям кондовую лисповую функциональщину хочу - функцию с кучей скобочек написал, у которой на входе список состояния входных PIO, а на выходе список состояния выходных PIO и лепота.

Такой вот оптимизации не завезли ещё?

Stanson ★★★★★
()

Благодарю! Очень полезный доклад. Я много нового узнал. Спасибо, что популяризируешь Common lisp! В русскоязычном интернете маловато столь детальной и конкретной информации.

Хочу познакомиться с Common lisp на практике. Реализовать небольшой проект. Можешь подсказать, есть ли какая-то библиотека, чтобы сделать web-gui? Уточню, что мне потребуется в пользовательском интерфейсе возможность авторизации пользователей, работа с текстом и графикой (схемы, пока 2D, но на перспективу было бы классно иметь возможность работать с 3D в браузере из lisp бэкенда). Заранее благодарю 🙏🏻

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

сравнение показанного с кложей

Скорее не с кложей как таковой, а с JVM. Но да, было бы любопытно. Как-то никогда не приходилось заниматься именно низкоуровневой оптимизацией на JVM.

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

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

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

Да, имел виду кложу сидящую на JVM. Варианты сидения на стульях .Net/JS в данном контексте не особо интересны ибо низкоуровневая оптимизация под них это кек по определению.

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

Почему с с кложей а напрмер ракетом или схемой?

Потому что мне лично интересны низкоуровневые оптимизации в Clojure т.к. выбрал ее для одного из своих хобби проектов в HPC, она просто лучше подходит при прочих равных под задачу.

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)