Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rコードのベンチマーク
Search
bob3bob3
October 20, 2022
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rコードのベンチマーク
Rコードのベンチマーク手法
bob3bob3
October 20, 2022
More Decks by bob3bob3
See All by bob3bob3
RとLLMで自然言語処理
bob3bob3
3
1.1k
RでPSM分析
bob3bob3
1
480
Rでコンジョイント分析 2024年版
bob3bob3
0
2.7k
『改訂新版前処理大全』の話と Apache Parquet の話 #TokyoR
bob3bob3
0
1.5k
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
670
『データ可視化学入門』をPythonからRに翻訳した話(増強版)
bob3bob3
0
620
『データ可視化学入門』を PythonからRに翻訳した話
bob3bob3
1
680
qeMLパッケージの紹介
bob3bob3
0
3k
「国と音楽」 ~spotifyrを用いて~ #muana
bob3bob3
2
680
Other Decks in Technology
See All in Technology
Sigmaで作る業務アプリ
kazushiro_honma
0
120
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
740
20260912_スクフェス三河
kgnkhkr
0
310
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
180
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
330
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
170
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
310
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
消えない 動かない 効かない
yama3133
1
120
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
Tab5をRubyで動くパソコンにする
kishima
2
350
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
450
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Designing for humans not robots
tammielis
254
26k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Claude Code のすすめ
schroneko
67
230k
Paper Plane (Part 1)
katiecoart
PRO
1
11k
From π to Pie charts
rasagy
0
360
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
Into the Great Unknown - MozCon
thekraken
41
2.7k
Marketing to machines
jonoalderson
1
5.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Transcript
Rコードのベンチマーク Tokyo.R #102 2022/10/22 LT @bob3bob3
Rコードの実行時間を計る • Rの中級者になり、コードのいろいろな書き方が身についてくると「どんな書 き方をすると処理の効率がいいんだろう?」という疑問が湧いてくることが あります。 • 今回はRの実行時間を計る以下の三つの方法をお話しします。 ◦ base::system.time() ◦
tictocパッケージ ◦ microbenchmarkパッケージ
準備 • nycflights13のデータを使い、「月、 飛行機会社、出発地、目的地毎に 件数、飛行時間の平均値、中央 値、標準偏差を算出する」処理を dplyr、dtplyr、data.tableで書き、そ れぞれの実行速度を計る。 • デモデータは約33万行。
# ライブラリ library(tidyverse) library(dtplyr) library(data.table) library(nycflights13) # デモデータ dat <- flights |> left_join(planes, by = "tailnum")
準備:各処理の関数化 # dplyrでの処理を関数化 f_dplyr <- function(){ dat |> group_by(month, carrier,
origin, dest) |> summarise( 件数 = n(), 平均 = mean(air_time, na.rm = TRUE), 中央値 = median(air_time, na.rm = TRUE), .groups = "drop" ) } # dtplyrでの処理を関数化 f_dtplyr <- function(){ dat |> lazy_dt() |> group_by(month, carrier, origin, dest) |> summarise( 件数 = n(), 平均 = mean(air_time, na.rm = TRUE), 中央値 = median(air_time, na.rm = TRUE), .groups = "drop" ) |> as_tibble() }
準備:各処理の関数化 # data.tableでの処理を関数化 f_data.table <- function(){ dt <- dat |>
data.table( key=c("month", "carrier", "origin", "dest") ) dt[ , .( 件数 = .N, 平均 = air_time |> mean(na.rm = TRUE), 中央値 = air_time |> median(na.rm = TRUE) ), by = list(month, carrier, origin, dest) ] |> as_tibble() }
base::system.time() system.time()の第一引数に測定したい 処理を入れるだけ。
tictocパッケージ # tic()とtoc()で測定したい処理を挟む library(tictoc) tic() f_dplyr() toc() tic() f_dtplyr() toc()
tic() f_data.table() toc()
microbenchmarkパッケージ (1/3) • 複数の処理を一度に測定できる。 • 同じ処理を複数回試行して測定できる。 • 結果を可視化できる。
library(microbenchmark) res_micro <- microbenchmark( "dplyr"= f_dplyr(), "dtplyr" = f_dtplyr(), "data.table" = f_data.table(), times = 30 )
microbenchmarkパッケージ (2/3)
microbenchmarkパッケージ (3/3) # 測定結果の可視化 res_micro |> autoplot() # 素のdata.tableよりdtplyrの方が速いのは #
どこか書き方が悪いのだろうか?
Enjoy!