LINUX.ORG.RU

Байтодрочерство common lisp

 , , ,


0

1

Придумал на днях абстрактную задачку, которую реализовал на лиспе. Попробовал покомпилить, но он ругается, что mod не может проинлайнить. И ещё какие-то преобразования, типа (sbcl). Кто спец в оптимизации лиспов, может, подскажет, где ещё можно навернуть скоростей?

★★★★★

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

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

Вопрос не в том, как сделать быстрее на каком-то определённом языке. Вопрос в том как сделать быстрее именно на этом языке. Т.е. выжать максимум.

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

сгенерировать горячие места кода в с, передать пайпом в gcc, общаться с скомпиленым бинарём через ipc

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

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

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

Смотри, как это в shootout в тесте mandelbrot сделано.

anonymous
()

mod неустраним, если ты именно хочешь делать mod от двух вещественных чисел. SBCL намекает, что если взять два int32, то будет быстрее :-)

Преобразование return value можно убрать, дописав в конец other значение nil.

monk ★★★★★
()
         (mw-pre (random w[0]))
         (sw-pre (mod mw-pre *p3*))
         (mw (coerce mw-pre 'double-float))
         (sw (coerce sw-pre 'double-float)))

(type-of (random 100d0))

Понял?

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

А вообще это я поспешил. Но я всё равно использовал бы (float x 1d0) - не так глаза режет как лишние переменные и coerce

anonymous
()

Ты не понял, лисп не предназначен для этого, он работает по-другому.

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