LINUX.ORG.RU

Python vs Lisp. Расстановка точек


0

1

питон:

den@ira-desktop:~/work/test$ time python -O test.py 
('answer: ', 39)

real	0m33.035s
user	0m32.890s
sys	0m0.084s
den@ira-desktop:~/work/test$

clisp:

den@ira-desktop:~/work/test$ time clisp test.lsp
39

real	2m44.491s
user	2m42.970s
sys	0m1.464s
den@ira-desktop:~/work/test$

def test():
    r = 0
    for i in range(0, 10000):
        for j in range(0, 10000):
            r = (r + (i * j) % 100) % 47
    return r
r = test()
print("answer: ", r)
(defun test ()
    (setq r 0)
    (dotimes (i 10000 r)
        (dotimes (j 10000 r)
            (setq r (mod (+ r (mod (* i j) 100)) 47))
        )
    )
)

(write (test))

а теперь докажите, что лисп не тормознутое УГ

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

Кстати, вообще говоря, clisp это тоже компилятор, в байткод и работает он от этого быстрее на порядок

для этого надо либо поставлять ему ключ -C, либо явно компилировать код

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

Нет, мы хотим. С участием php-хакеров, жрущих чёрную икру на завтрак и демпингующих лисперов-равшанов-джумшутов

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

Когда я вспоминаю лисп, сразу вспоминешься ты :)
Просто не верится что взрослый человек, уже не какой-нить перво-второкурсник, а пропагандирует лисп как язык «для всего»...
Ну да ладно, тот пост был чисто так, для проверки реакции :)

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

Просто не верится что взрослый человек, уже не какой-нить перво-второкурсник, а пропагандирует лисп как язык «для всего»...

Ах, кто бы говорил....

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

согласен, доказали

хотя мне удалось свести питон к этому

den@ira-desktop:~/work/test$ time python test.py
('answer: ', 39)

real	0m4.969s
user	0m4.924s
sys	0m0.012s

a SBCL к этому

den@ira-desktop:~/work/test$ time sbcl --load test.lsp --eval "(quit)"
This is SBCL 1.0.29.11.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
39
real	0m3.657s
user	0m3.604s
sys	0m0.044s

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

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

/me смотрит на анонимуса взглядом как человек, смотрящий на сироту, но понимающий что ничем помочь не может

Вам, php-шникам, никто не завидует.

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

> Харе гнать на CLISP! :) Хорошая реализация, и я ей доволен

А для чего используем? Я в него не могу почти не один свой проект загрузить, какая-нибудь либа обязательно отвалится.

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

Дык а я что? Мне то можно, я ещё так молод и могу позволить ошибаться и развиваться в неправильную сторону. Но тв. mv...

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

Вот блин, проверил реакцию службы быстрого реагирования лиспотроллей и получил 1 игнор =/

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

> хотя мне удалось свести питон к этому

Каким образом?

a SBCL к этому


Не надо SBCL так запускать, он не предназначен для быстрого старта. В CL есть специально для этого макрос time, которые показывает время выполнения код.

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

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

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

Дык а я что? Мне то можно, я ещё так молод и могу позволить ошибаться и развиваться в неправильную сторону. Но тв. mv...

Да и mv ещё рано вроде как на пенсию отправлять.

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

> Дык а я что? Мне то можно, я ещё так молод и могу позволить ошибаться и развиваться в неправильную сторону.

во-во, может через лет пять будешь за лисп агитировать ;)

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

Зело, черной-мана завистью, насяльника

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

>Я вижу, обидела тебя эта икра до глубины души. Что, завидуешь таки нам, php-шникам?

Завидовать тому, что вы для говна придумали новое название - «черная икра»?

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

>Каким образом?

psyco, был приятно удивлен. скомпилить при помощи pyrex не вышло

Не надо SBCL так запускать, он не предназначен для быстрого старта. В CL есть специально для этого макрос time, которые показывает время выполнения код.

да согласен, надо замерять в самом коде

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

Не надо SBCL так запускать, он не предназначен для быстрого старта.


Java тоже требует startup warming, но анонимным аналитикам с лора это побарабану, жаба у них тормозит и все тут

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

>Мне то можно, я ещё так молод и могу позволить ошибаться и развиваться в неправильную сторону.

Развиваться? Ты? Ты себе сильно льстишь!

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

Фигасе. Грац, ты - первый анонимус-пэхапэкодер, который ест красную икру, имеет личного водителя и прислуг.

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

Развиваться ты, к сожалению, не способен. У тебя отсутсвуют необходимые для этого навыки.

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

Не исключаю, а по фотке кажется что человеку уже не 22 года =/

во-во, может через лет пять будешь за лисп агитировать ;)

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

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

>А для чего используем? Я в него не могу почти не один свой проект загрузить, какая-нибудь либа обязательно отвалится.

Подтверждаю, у него FFI уже несколько лет сломан и не чинится.

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

> Открыл первый пакет попкорна, прогнозирую over 24 страниц в этом треде

закрывай - «тяжелой артиллерии» нет, значит быстро все заглохнет

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

>>Каким образом?

psyco, был приятно удивлен. скомпилить при помощи pyrex не вышло

А теперь сравни его с clisp'овым JIT'ом, как предложили выше.

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

>Развиваться? Ты? Ты себе сильно льстишь!
Откуда такой комок злости? Прямо изрыгнул на меня. А что я тебе сделал? Ничего. Обидно даже, да. Хотяя... Может ты просто один из злых анонимусов? Вполне возможно.

Развиваться ты, к сожалению, не способен. У тебя отсутсвуют необходимые для этого навыки.

Какой злой анонимус :) Нет, ты ещё зеленоват, есть и более злые, по сему ты не интересен :)

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

>Открыл первый пакет попкорна, прогнозирую over 24 страниц в этом треде

24 страницы это уже пройденный этап. Тогда была лишь тренировка. (Производители попкорна довольно потирают руки)

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

Вообще народ давайте все кто на чём пишет сделаем этот тест и составим мини-статистику типа среднее по компиляторам vs байткодам vs интерпретаторам.

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

> сделаем этот тест и составим мини-статистику

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

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

>А смысл? Здесь не работы с памятью, не обработки ошибок, не виртуальных вызовов, т.е. вообще ничего, что определяет производительность реальных приложений.

Я и не говорю, что этот тест всеобъемлющ, но начали же сравнение с него. Интересно было бы сопоставить результаты с http://shootout.alioth.debian.org

PS. Ты намеренно делаешь постоянно ошибку в применении усилительной ни?
«Здесь нет ни работы с памятью, ни обработки ошибок, ни виртуальных вызовов, т.е. вообще ничего, что определяет производительность реальных приложений.»
«Я в него не могу почти ни один свой проект загрузить, какая-нибудь либа обязательно отвалится.»

anonymous
()

У меня

Хаскел:

test = foldl (\r i -> foldl (\r' j -> (r' + (i * j) `mod` 100) `mod` 47) r [0..9999]) 0 [0..9999]

main = print $ "answer: " ++ show test

excelsior:haskell excelsior$ time ./test
"answer: 39"

real	0m6.083s
user	0m6.006s
sys	0m0.038s

Педон:

excelsior:python excelsior$ time python -O test.py 
('answer: ', 39)

real	0m30.834s
user	0m29.161s
sys	0m0.192s

Тсепепе:

excelsior:cpp excelsior$ time ./test
answer: 39

real	0m1.263s
user	0m1.185s
sys	0m0.003s

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

> Интересно было бы сопоставить результаты с

http://shootout.alioth.debian.org


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

Ты намеренно делаешь постоянно ошибку в применении усилительной ни


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

archimag ★★★
()

Для справедливости PLT Scheme (immutable, время в мс):

(define (test)
  (define (loop-outer i n)
    (define (loop-inner j n)
      (if (= j 10000)
        n
        (loop-inner (+ j 1) (modulo (+ n (modulo (* i j) 100)) 47))))
    (if (= i 10000)
      n
      (loop-outer (+ i 1) (loop-inner 0 n))))
  (loop-outer 0 0))

> (time (test))
cpu time: 12721 real time: 12764 gc time: 0
39
# time python lortest.py 
('answer: ', 39)

real	0m28.070s
user	0m28.046s
sys	0m0.016s
Puzan ★★★★★
()
Ответ на: комментарий от archimag

> Там тесты полный отстой, по крайней мере для SBCL, просто посмотри на вывод, там сплошные предупреждения, что ничего не удалось оптимизировать.

напиши лучше и сравни результат

lester ★★★★
()
Ответ на: У меня от anonymous

Рекомендую заменить foldl на foldl' для ускорения

Shimuuar
()

Результаты, кучею собранные:

http://img8.imageshack.us/img8/7633/sbclpythonc.png

вариант на лиспе:

(defun test ()
  (let ((r 0))
    (dotimes (i 10000)
      (dotimes (j 10000)
        (setf r (mod (+ r (mod (* i j) 100)) 47))))
    r))

(defun test-opt ()
  (declare (optimize (speed 3) (space 0) (safety 0) (debug 0)))
  (let ((r 0))
    (declare (type fixnum r))
    (dotimes (i 10000)
      (dotimes (j 10000)
        (setf r (mod (+ r (mod (* i j) 100)) 47))))
    r))

(defun main ()
  (time (format t "Answer: ~d~%" (test)))
  (time (format t "Optimized version. Answer: ~d~%" (test-opt)))
  (quit))

(save-lisp-and-die "speedtest-sbcl"
                   :executable t
                   :toplevel #'main)

И вариант на Си:
#include <stdio.h>

int test()
{
    int r = 0;
    for(int i = 0; i<10000; ++i)
        for(int j = 0; j<10000; ++j)
            r = (r + (i * j) % 100) % 47;
    return r;
}

int main(void)
{
    int r = test();
    printf("Answer: %d", r);
}
Вариант на Python такой же, как был, только, как видно, компилируется. Что интересно, от компиляции python результат работы не улучшил, если натравить интерпретатор прямо на файл с кодом - результат такой же.

Итог - современная реализация Common Lisp медленнее Си, фактически ассемблера, в ~1.5 раза(а если без механических оптимизаций, с длинной арифметикой, то всего в ~3.5), а современная реализация Python - в ~30 раз в лучшем случае.

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

> Итог - современная реализация Common Lisp медленнее Си, фактически ассемблера, в ~1.5 раза

опции компилятора в студию

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

>Подтверждаю, у него FFI уже несколько лет сломан и не чинится.

А где он сломан?
У меня библиотека на нем нормально запускается, а там и коллбэки к winapi, и вызов com.

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

>> Там тесты полный отстой, по крайней мере для SBCL, просто посмотри на вывод, там сплошные предупреждения, что ничего не удалось оптимизировать.

напиши лучше и сравни результат

О чём и речь. У меня некоторые тесты там вызывают, скажем... удивление.

Русский, а в последующем английский, языки наиболее были мои самые проблемные предметы сначала в школе (начиная с самых младших классов)

Почитай классиков наших, они выправляют это

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

ну и опять же, если говорить «Common Lisp медленнее Си в столько раз» - то надо хотя бы на icc еще прогнать

lester ★★★★
()
Ответ на: У меня от anonymous

Хаскел:

А ключики оптимизации какие есть? Должно быть быстрее.

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

Кстати, там версия SBCL на картинку не влезла, SBCL - 1.0.35.6, win32

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

>а современная реализация Python - в ~30 раз в лучшем случае

смотри выше про psyco

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