The R Book ご意見/6
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
* 実行時間の短縮
-ページ: [[The R Book ご意見]]
-投稿者: [[匿名]]
-優先順位: 低
-状態: 保留
-カテゴリー: 提案
-投稿日: 2004-05-30 (日) 21:44:41
-バージョン: [version]
** メッセージ
私は,わかりやすいコードを書くことを推奨するものです。
トリックを弄すれば,若干の計算時間の短縮に寄与できる場合...
しかし,計算時間の短縮というのが,最適化する前の何分の一...
また,これは大部分の場合には該当しませんが,初心者に例示...
前置きが長くなってしまいましたが,対象とされている著書の...
例示されているプログラムは,実際の状況を反映している,初...
これ以下の部分は,揚げ足をとるものではないですし,わざわ...
またまた,前置きが長くなりましたが,
もとのプログラム(の主要部分)を以下に示します。
# 1:13がダイヤ, 14:26がクラブ, 27:39がハート, 40:52がス...
check <- function(x) {
alldia <- (max(x)<=13); allcrab <- ((min(x)>=14)&(max(x...
allheart <- ((min(x)>=27)&(max(x)<=39)); allspade <-(mi...
(alldia | allcrab | allheart | allspade)
}
list7.4.0 <- function(rep1) # 13.63
{
pass <- 0; try <- 0
while(try < rep1) {
# シャッフルする
X <- rank(runif(52,0,1))
# 配る
p1 <- c(X[1],X[3],X[5],X[7],X[9])
p2 <- c(X[2],X[4],X[6],X[8],X[10])
if (check(p1)|check(p2)) {
pass <- pass+1
}
try <- try+1
}
pass/rep1
}
system.time(list7.4.0(10000))
改訂版を以下に示します。
check2 <- function(x)
{
any(all(x <= 13), all((14 <= x) & (x <= 26)), all((27 <...
}
list7.4.2 <- function(rep1) # 4.37
{
pass <- 0; try <- 0
while(try < rep1) {
X <- sample(1:52, 10)
if (check2(X[1:5]) | check2(X[6:10])) {
pass <- pass+1
}
try <- try+1
}
pass/try
}
system.time(list7.4.2(10000))
結果は,どうなったと思いますか
> system.time(list7.4.0(10000))~
[1] 15.39 1.08 34.99 0.00 0.00
> system.time(list7.4.2(10000))~
[1] 5.11 0.35 11.48 0.00 0.00
です。後者は,「トランプを配る」というところを変えただけ...
それで,実行時間が3分の1になったと評価するか,なんだ,3分...
今回示したコードには,「自分ならこう書くけどな?」と思う...
というか,「いやー,そんなことないぞ!!このプログラムな...
----
- 記事一見削除。[[Rコードの最適化例:トランプ]]参照
- x <- matrix(sample(1:52, 10*n, replace=TRUE), ncol=5) ...
私もはまってしまったのです。system.time 関数で時間を測っ...
-そうでしたか。訂正版をそのうち公開しますといいたいところ...
-ご意見ありがとうございます。たしかに,高速化は大規模なシ...
#comment
終了行:
* 実行時間の短縮
-ページ: [[The R Book ご意見]]
-投稿者: [[匿名]]
-優先順位: 低
-状態: 保留
-カテゴリー: 提案
-投稿日: 2004-05-30 (日) 21:44:41
-バージョン: [version]
** メッセージ
私は,わかりやすいコードを書くことを推奨するものです。
トリックを弄すれば,若干の計算時間の短縮に寄与できる場合...
しかし,計算時間の短縮というのが,最適化する前の何分の一...
また,これは大部分の場合には該当しませんが,初心者に例示...
前置きが長くなってしまいましたが,対象とされている著書の...
例示されているプログラムは,実際の状況を反映している,初...
これ以下の部分は,揚げ足をとるものではないですし,わざわ...
またまた,前置きが長くなりましたが,
もとのプログラム(の主要部分)を以下に示します。
# 1:13がダイヤ, 14:26がクラブ, 27:39がハート, 40:52がス...
check <- function(x) {
alldia <- (max(x)<=13); allcrab <- ((min(x)>=14)&(max(x...
allheart <- ((min(x)>=27)&(max(x)<=39)); allspade <-(mi...
(alldia | allcrab | allheart | allspade)
}
list7.4.0 <- function(rep1) # 13.63
{
pass <- 0; try <- 0
while(try < rep1) {
# シャッフルする
X <- rank(runif(52,0,1))
# 配る
p1 <- c(X[1],X[3],X[5],X[7],X[9])
p2 <- c(X[2],X[4],X[6],X[8],X[10])
if (check(p1)|check(p2)) {
pass <- pass+1
}
try <- try+1
}
pass/rep1
}
system.time(list7.4.0(10000))
改訂版を以下に示します。
check2 <- function(x)
{
any(all(x <= 13), all((14 <= x) & (x <= 26)), all((27 <...
}
list7.4.2 <- function(rep1) # 4.37
{
pass <- 0; try <- 0
while(try < rep1) {
X <- sample(1:52, 10)
if (check2(X[1:5]) | check2(X[6:10])) {
pass <- pass+1
}
try <- try+1
}
pass/try
}
system.time(list7.4.2(10000))
結果は,どうなったと思いますか
> system.time(list7.4.0(10000))~
[1] 15.39 1.08 34.99 0.00 0.00
> system.time(list7.4.2(10000))~
[1] 5.11 0.35 11.48 0.00 0.00
です。後者は,「トランプを配る」というところを変えただけ...
それで,実行時間が3分の1になったと評価するか,なんだ,3分...
今回示したコードには,「自分ならこう書くけどな?」と思う...
というか,「いやー,そんなことないぞ!!このプログラムな...
----
- 記事一見削除。[[Rコードの最適化例:トランプ]]参照
- x <- matrix(sample(1:52, 10*n, replace=TRUE), ncol=5) ...
私もはまってしまったのです。system.time 関数で時間を測っ...
-そうでしたか。訂正版をそのうち公開しますといいたいところ...
-ご意見ありがとうございます。たしかに,高速化は大規模なシ...
#comment
ページ名: