tag:blogger.com,1999:blog-4007342736133040943.post7468741506623685542..comments2023-03-26T06:09:18.992+03:00Comments on Clojure: Тест производительности (updation 2)Dmitryhttp://www.blogger.com/profile/17434341697941378483noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-4007342736133040943.post-32311144031126979572011-04-27T15:22:00.679+03:002011-04-27T15:22:00.679+03:00Вот вариант на Racket, раз пошла такая пляска:
(de...Вот вариант на Racket, раз пошла такая пляска:<br />(define (fac n fn)<br /> (define len (add1 (truncate (/ n fn))))<br /> (apply * <br /> (map (λ (x) (apply * x))<br /> (for/list ([i (in-range (add1 fn))])<br /> (for/list ([j (stop-before (in-range 1 (add1 len))<br /> (λ (j) (> (+ j (* i len)) n)))])<br /> (+ j (* i len)))))))Druuhttps://www.blogger.com/profile/15250171364559773711noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-36584037649021683532011-04-26T09:18:57.947+03:002011-04-26T09:18:57.947+03:00Vinzent: знаю, просто хотелось сделать типа как в ...Vinzent: знаю, просто хотелось сделать типа как в математике n!<br />Alkhimov: распараллеливание здесь ничего не покажет, достаточно просто посмотреть, как язык считает на одном треде.Dmitryhttps://www.blogger.com/profile/17434341697941378483noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-70299195404908274692011-04-25T19:58:13.993+03:002011-04-25T19:58:13.993+03:00а почему факториал считается в одном трэде? ведь п...а почему факториал считается в одном трэде? ведь параллелится же "на ура"...Alkhimovhttps://www.blogger.com/profile/09524061013883637393noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-54149492917457877032011-04-25T16:31:00.312+03:002011-04-25T16:31:00.312+03:00Gambit-C
$ cat fg.scm
(define (f n acc)
(if (=...Gambit-C<br /><br />$ cat fg.scm <br />(define (f n acc)<br /> (if (= n 0)<br /> acc<br /> (f (- n 1) (* acc n))))<br /><br />(with-output-to-file "f.txt" (lambda () (display (f 50000 1))))<br /><br />...интерпретируем-интерпретируем...<br /><br />$ time ./a.out <br />./a.out 2,30s user 0,02s system 99% cpu 2,325 total<br /><br />$ wc -c f.txt <br />213237 f.txtrmrfchikhttps://www.blogger.com/profile/08011103855274524963noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-56082091773695942352011-04-25T13:25:45.881+03:002011-04-25T13:25:45.881+03:00Поправочка:
: factorial ( n -- n! )
[1,b] produc...Поправочка: <br /><br />: factorial ( n -- n! )<br />[1,b] product ;<br /><br />[ 50000 factorial drop ] timeMatrixhttps://www.blogger.com/profile/18392901973813676873noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-68767653207827636612011-04-25T13:24:57.992+03:002011-04-25T13:24:57.992+03:00Попробуйте посчитать на Factor'е
: factorial ...Попробуйте посчитать на Factor'е<br /><br />: factorial ( n -- n! )<br /> [1,b] product ;<br /><br />[ 50000 factor drop ] time<br /><br />На моей Core i7 760QM (1.6GHz) считает за 1.4 секунды..Matrixhttps://www.blogger.com/profile/18392901973813676873noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-45090016232220788802011-04-24T21:43:41.479+03:002011-04-24T21:43:41.479+03:00Схема не интерпретатор.Схема не интерпретатор.rmrfchikhttps://www.blogger.com/profile/08011103855274524963noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-13041083652144301932011-04-24T10:46:37.994+03:002011-04-24T10:46:37.994+03:00Как обычно, забыли в Racket отключить debug mode и...Как обычно, забыли в Racket отключить debug mode и трассировку стека? У меня ~18 секунд Racket и Clojure, причем на аргументах до 40000 Racket стабильно вдвое быстрее. И да, там jit, а не интерпретатор.Druuhttps://www.blogger.com/profile/15250171364559773711noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-4321130171553876132011-04-24T08:56:38.428+03:002011-04-24T08:56:38.428+03:00dream-x: Ну это еще от компьютера зависит. Я тести...dream-x: Ну это еще от компьютера зависит. Я тестирую на Intel Core i5 430M (2.26GHz, 3Mb L3 cache), 4Gb Memory.<br />Кстати, что интересно, Ruby 1.9.2 справился с тестом за 10с.Dmitryhttps://www.blogger.com/profile/17434341697941378483noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-83222228794694105282011-04-24T00:26:19.455+03:002011-04-24T00:26:19.455+03:00Scala оказалась быстрее Clojure выдает 21s.Scala оказалась быстрее Clojure выдает 21s.dream-xhttps://www.blogger.com/profile/08509947043601516858noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-35695150128377672502011-04-24T00:18:00.530+03:002011-04-24T00:18:00.530+03:00Это не тест языков, это тест их библиотек для рабо...Это не тест языков, это тест их библиотек для работы с большими целыми числами.Vladimir Shabanovhttps://www.blogger.com/profile/14322574042735481057noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-42314036168511240342011-04-23T23:51:04.714+03:002011-04-23T23:51:04.714+03:00Для рекурсивной версии java можно -Xms поставить п...Для рекурсивной версии java можно -Xms поставить побольше.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-41167369083444867262011-04-23T22:54:13.652+03:002011-04-23T22:54:13.652+03:00sbcl 1.0.45:
(defun factorial (x)
(labels ((he...sbcl 1.0.45:<br /><br /><br />(defun factorial (x)<br /> (labels ((helper (current accum)<br /> (if (= current 1)<br /> accum<br /> (helper (1- current)<br /> (* current accum)))))<br /> (helper x 1)))<br /><br />0.611 seconds of real time<br />0.612038 seconds of total run time (0.596037 user, 0.016001 system)Packetman / человекпакетhttps://www.blogger.com/profile/03792395502963611672noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-18386850558531521732011-04-23T22:13:24.077+03:002011-04-23T22:13:24.077+03:00main = print $ product [1..50000]
home% ghc --mak...main = print $ product [1..50000]<br /><br />home% ghc --make -O2 fact2.hs && time ./fact2 > /dev/null<br />./fact2 > /dev/null 0.26s user 0.00s system 98% cpu 0.261 totalPacketman / человекпакетhttps://www.blogger.com/profile/03792395502963611672noreply@blogger.comtag:blogger.com,1999:blog-4007342736133040943.post-30735992947095772272011-04-23T22:03:54.672+03:002011-04-23T22:03:54.672+03:00Yea, right. sbcl is a definitly way to go...
f&#...Yea, right. sbcl is a definitly way to go...<br /><br /><br />f' :: Integer -> Integer -> Integer<br />f' 1 a = a<br />f' x a = f' (x - 1) (a * x)<br /><br />main = print $ f' 50000 1<br /><br /><br />home% ghc --make -O2 fact.hs<br />home% time ./fact > /dev/null <br />./fact > /dev/null 0.28s user 0.01s system 98% cpu 0.292 total<br /><br />home% time runhaskell fact.hs > /dev/null<br />runhaskell fact.hs > /dev/null 0.44s user 0.02s system 99% cpu 0.468 totaPacketman / человекпакетhttps://www.blogger.com/profile/03792395502963611672noreply@blogger.com