小编Der*_*nor的帖子

为什么R在这个随机排列函数上变慢?

我是R(Revolution Analytics R)的新手,并且已经将一些Matlab函数转换为R.

问题:为什么GRPdur(n)函数这么慢?

GRPdur = function(n){
#
# Durstenfeld's Permute algorithm, CACM 1964
# generates a random permutation of {1,2,...n}
#
p=1:n                           # start with identity p
for (k in seq(n,2,-1)){    
    r    = 1+floor(runif(1)*k); # random integer between 1 and k
    tmp  = p[k];
    p[k] = p[r];                #  Swap(p(r),p(k)).
    p[r] = tmp;                  
} 
return(p)
}
Run Code Online (Sandbox Code Playgroud)

以下是戴尔Precision 690,2xQuadcore Xeon 5345 @ 2.33 GHz,Windows 7 64位的内容:

> system.time(GRPdur(10^6))
   user  system elapsed 
  15.30    0.00   15.32 
> system.time(sample(10^6))
   user  system elapsed 
   0.03 …
Run Code Online (Sandbox Code Playgroud)

random r permutation

6
推荐指数
2
解决办法
2081
查看次数

谁能解释Revol R中LU分解的异常行为?

一个简单的矩阵基准测试表明,Revolution Analytics R 2.13.2的LU分解比矩阵乘法慢近5倍.理论和多年的实践表明,LU应该是1/3到2/3的时间A*A.

Revo R和Matlab正在使用英特尔的数学核心进行此测试. R 2.14.1没有使用内核.一切都是64位.

异常现象见下表2.这是表1的标准化A*A.还有其他(明显的)异常,但LU是最明显的异常.

                        Table 1 (secs)

                    A*A     LU     A\b    Det   Inv
----------------------------------------------------
R 2.14.1           0.757   0.43   0.45   0.20  1.11
Revo R 2.13.2      0.063   0.35   0.11   0.03  0.14
Matlab 2011b       0.062   0.08   0.10   0.07  0.16
----------------------------------------------------
Averaged over 20 runs on a 1000x1000 random matrix


                       Table 2 (normalized)

                    A*A     LU     A\b    Det   Inv
----------------------------------------------------
R 2.14.1             1     0.57   0.19   0.26  1.47
Revol R 2.13.2       1     4.67* …
Run Code Online (Sandbox Code Playgroud)

r matrix decomposition

2
推荐指数
1
解决办法
324
查看次数

标签 统计

r ×2

decomposition ×1

matrix ×1

permutation ×1

random ×1