А вот такой вот, например

Feb 19, 2012 20:48

The Julia Language

We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as ( Read more... )

julia, programming, code, programming language

Leave a comment

p2004r February 19 2012, 20:25:25 UTC
тестировать скорость for() в R становится традицией :) (даже простейшая правка всего на 1000 повторений меняет существенно скорость)

есть library(inline) как бы для замены таких for(), а вообще очень хочется loop из cl (оно даже по синтаксису бы выглядело органично :)

> randmatstat = function(t) {
+ n <- 5
+ nn <- n*n
+ r <- replicate(t,{a = matrix(rnorm(nn), ncol=n, nrow=n ( ... )

Reply

swizard February 20 2012, 09:30:08 UTC
Но, вроде бы, 238 против 258 -- это не очень существенно?

Reply

p2004r February 20 2012, 09:55:51 UTC
ну вот есть быстрее пример, встроенная функция одного языка против встроенной функции другого.

вообще дремучий склеров не позволяет мне что то вспомнить вариант интерпретатора R где с for() все в порядке :( типа Renjin, но не он :(

# мегатест нового языка :)
## numeric vector sort ##

function sortperf(n)
v = rand(n)
sort!(v)
end

# тут был мегакод с for() на R реализующий уже реализованную встроенную функцию

> sortperf = function(n) {
+ v = runif(n)
+ return(qsort(v))
+ }
>
> timeit('quicksort', sortperf, 5000)
r,quicksort,408.00000000
> timeit('quicksort', sortperf, 5000)
r,quicksort,410.00000000
> timeit('quicksort', sortperf, 5000)
r,quicksort,414.00000000
> ?sort
> sortperf = function(n) {
+ v = runif(n)
+ return(sort(v))
+ }
> timeit('quicksort', sortperf, 5000)
r,quicksort,1.00000000
> timeit('quicksort', sortperf, 5000)
r,quicksort,1.00000000
> timeit('quicksort', sortperf, 5000)
r,quicksort,1.00000000
>

> sort ( ... )

Reply

p2004r February 20 2012, 11:01:15 UTC
ну и если полностью переписать, то еще больше :)

а вообще след от произведения матриц в R считается куда эффективнее, его нельзя оценить по этой пропаганде (издали похожей на него :) вставили возведение в степень как дети :)

> randmatstat = function(t) {
+ n <- 5
+ nn <- n*n
+ r <- replicate(t,{P <- cbind(matrix(rnorm(nn), ncol=n, nrow=n ( ... )

Reply

p2004r February 24 2012, 08:15:27 UTC
о! вспомнил!

В три раза код с for() и рекурсией становится быстрее. Естественно что вылизанный до предела код без циклов и вызовов функций компиляцией тормозится на время компиляции.

А pisum в 7 раз быстрее стал.

> library(compiler)
> enableJIT(0)
[1] 0
> assert = function(bool) {
+ if (!bool) stop('Assertion failed')
+ }
>
> timeit = function(name, f, ..., times=5) {
+ tmin = Inf
+ for (t in 1:times) {
+ t = system.time(f(...))["elapsed"]
+ if (t < tmin) tmin = t
+ }
+ cat(sprintf("r,%s,%.8f\n", name, tmin*1000))
+ }
> fib = function(n) {
+ if (n < 2) {
+ return(n)
+ } else {
+ return(fib(n-1) + fib(n-2))
+ }
+ }
>
> assert(fib(20) == 6765)
> timeit("fib", fib, 20)
r,fib,64.00000000
> timeit("fib", fib, 20)
r,fib,63.00000000
> enableJIT(3)
[1] 0
> enableJIT(3)
[1] 3
> timeit("fib", fib, 20)
r,fib,19.00000000
> timeit("fib", fib, 20)
r,fib,20.00000000
> timeit("fib", fib, 20)
r,fib,20.00000000

--------------------8> enableJIT(0 ( ... )

Reply


Leave a comment

Up