More Related Content PDF
Oracle Cloud Developers Meetup@東京
tuchimur
PPTX
Non è mai stato così facile condividere
exlab
Viewers also liked (16)
DOCX
From 'Fractal How' to Emergent Empowerment (2013 article)
Neil Thompson
PDF
Presentation of the European Youth Parliament Republic of Moldova
EYP Moldova
PDF
The model of perfect competition
Lin Zaw
Similar to TokyoR24 - PerformanceRvsC# (20)
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
PPTX
関数型言語&形式的手法セミナー(3)
啓 小笠原
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
PPTX
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Fujio Kojima
PPTX
Windows 8時代のアプリ開発
信之 岩永
Recently uploaded (11)
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
TokyoR24 - PerformanceRvsC#2. 発表者について
ta2c = + +
名前:くらもと たつし
ta2c
趣味:アイスクリームを食べる
2 (年間350個)
仕事:表示層(UI層)の開発
(Adobe Flash, Microsoft Silverlightなど)
3. 発表者について
ta2c = + +
なぜTokyo.Rにきたか?
大学院生のとき 時系列解析 を専攻
3 今年R言語に出会い、興味を持った。
なにかお仕事で使えないか。
6. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
6
7. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
Webブラウザ(HTML)
7 Webブラウザの
プラグイン
デスクトップアプリ
8. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
JAVA
PHP
8
ASP.NET
Perl
9. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
MySQL
SQL Server
9
PostgreSQL
Oracle DB
10. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
1
[Excel]+R [Hadoop]+R [Oracle]+R
0
[.NET]+R [Python]+R
[C,C++]+R
11. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
1
[Excel]+R [Hadoop]+R [Oracle]+R
1
[.NET]+R [Python]+R
[C,C++]+R
12. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
1
[Excel]+R [Hadoop]+R [Oracle]+R
2
[.NET]+R [Python]+R
[C,C++]+R
13. 今日のテーマについて
[3層アプリケーション]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
1
[Excel]+R [Hadoop]+R [Oracle]+R
3
[.NET]+R [Python]+R
[C,C++]+R
14. 今日のテーマについて
0.00% 5.00% 10.00% 15.00% 20.00%
C[1位] 17.73%
Java[2位] 16.27%
C++[3位] 9.36%
Objective-C[4位] 9.09%
C#[5位] 7.03%
(Visual) Basic[6位] 6.05%
PHP[7位] 5.29%
Python[8位] 3.85%
Perl[9位] 2.22%
1 Ruby[10位] 1.68%
4 R[30位] 0.44%
2012年6月プログラミング言語人気ランキング
引用先:TIOBE Software
15. 今日のテーマについて
パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
1 4. パフォーマンスの問題
5
16. パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
1 4. パフォーマンスの問題
6
17. C#でRを動かすための準備
1. Visual C# 2010 Express
2. R.NET
の2つのインストールを⾏う。
1
7
19. C#でRを動かすための準備
Windows Mac Android iPhone
5% 4%
8%
2012年6⽉1ヶ⽉間
「忍者アクセス解析」
の国内シェア調査。
1 83% (データ数4.6億)
9
引用先:サムライファクトリー
21. C#でRを動かすための準備
1. Visual C# 2010 Express
2. R.NET
の2つのインストールを⾏う。
2
1
22. C#でRを動かすための準備
Visual C# 2010 Express
・マイクロソフトが提供する、
無料のC#開発環境。
・製品版と比較すると機能が限定される
(チーム連携不可、帳票作成不可など)
・使用期間制限は無し。
(ただし、30日以上使用するには、
ユーザー登録が必要)
2
2 ※本発表で使用したアプリは、
Visual C# 2010 Expressで実装しました。
23. C#でRを動かすための準備
Visual C# 2010 Expressのインストール
※[VS 2010 Express] でネットで検索。
2
3
24. C#でRを動かすための準備
Visual C# 2010 Expressのインストール
※[VS 2010 Express] でネットで検索。
2
4
31. C#でRを動かすための準備
R.NET
から を
操作するための
ライブラリ
・CodePlexで配布中。
・ライセンス
3 フリーソフト(LGPL2.1)
1
32. C#でRを動かすための準備
R.NET
から を
操作するための
ライブラリ
開発者(家元):
@kos59125 (名古屋在住)
3 参考資料:
第13回Tokyo.R
2
「Rと.NET Framework」
※家元イメージ
33. C#でRを動かすための準備
R.NET 補足:最新版R (2.15.1)でつなげて
みようとすると、「Rlapack.dllが
無いよ」というエラーになる
3
3
34. C#でRを動かすための準備
R.NET 補足:最新版R (2.15.1)でつなげて
みようとすると、「Rlapack.dllが
無いよ」というエラーになる
REngine.SetDllDirectory(@"C:¥Program Files¥R¥R-2.15.1¥bin¥i386");
using (REngine engine = REngine.CreateInstance("RDotNet"))
3
4
35. C#でRを動かすための準備
R.NET 補足:最新版R (2.15.1)でつなげて
みようとすると、「Rlapack.dllが
無いよ」というエラーになる
REngine.SetDllDirectory(@"C:¥Program Files¥R¥R-2.15.1¥bin¥i386");
// Rlapack.dllがない問題対策スタート
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:¥Program Files¥R¥R-2.15.1";
3 System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH",
System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome +
5 @"¥bin¥i386");
// Rlapack.dllがない問題対策エンド
using (REngine engine = REngine.CreateInstance("RDotNet"))
36. パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
3 4. パフォーマンスの問題
6
37. 計測方法
>
x <- 1:1000000
y <- 0
for (i in x) {y <- y + i}
3
7
38. 計測方法
> system.time({
x <- 1:1000000
y <- 0
for (i in x) {y <- y + i}
})
3
8
39. 計測方法
> system.time({
x <- 1:1000000
y <- 0
for (i in x) {y <- y + i}
})
3
ユーザ システム 経過
9
2.28 0.00 2.28
40. 計測方法 今回はC#で計測するので
これは使用しない。
> system.time({
x <- 1:1000000
y <- 0
for (i in x) {y <- y + i}
})
4
ユーザ システム 経過
0
2.28 0.00 2.28
42. 計測方法
ボタンクリック
計算開始 計算開始
計算終了 計算終了
4
2 計測結果表示
43. 計測方法
ボタンクリック
開始日時
計算開始 計算開始
計算終了 計算終了
4 終了日時
3 ※この差分を
計測結果表示
計測結果とす
る。
44. パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
4 4. パフォーマンスの問題
4
48. パフォーマンス R vs C#
4 (n=1, 10, 100, 1000, 1万, 10万,
…,100兆, 1000兆, 1京)
8
49. パフォーマンス R vs C#
(1) For文で加算する
‘For文で加算する’
(2) x <- 1:100000000
y <- 0
for (i in x) {y <- y + i}
4 ‘ベクトルでsum’
x <- 1:100000000
9 (3) s <- as.double(x)
y <- sum(s)
53. パフォーマンス R vs C#
検証マシンについて
MacBook Pro 2300/13 MC700J/A
(発売年月:2011/2)
CPU: Intel Core i5 2.3GHz
メモリ: 8GB (DDR3 PC3-10600)
OS: Windows 7 SP1 64bit (Ultimate)
5
3
55. パフォーマンス R vs C#
計測結果 単位:秒(1000分の1秒単位で計測)
C# R(Loop) R(sum)
1万 0 0.029 0.001
10万 0.001 0.286 0.002
100万 0.004 2.672 0.084
1000万 0.039 22.621 0.419
5 1億 0.384 × 2.339
5 10億 3.674 × エラー
100億 21.001 × ×
56. パフォーマンス R vs C#
計測結果
C# R(Loop) R(sum)
1万 0 0.029 0.001
10万 0.001 0.286 0.002
100万 0.004 2.672 0.084
1000万 0.039 22.621 0.419
5 1億 0.384 × 2.339
6 10億 3.674 × エラー
100億 21.001 × ×
58. パフォーマンス R vs C#
計測結果
[1位]
6〜10倍早い
[2位] sum()
30〜50倍早い
5
8
[3位] For文
60. パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
6 4. パフォーマンスの問題
0
62. パフォーマンスの問題
[アプリケーションの工程(ウォーターフォール)]
要件定義
設計
開発
6 テスト
2
納品/リリース
63. パフォーマンスの問題
[アプリケーションの工程(ウォーターフォール)]
要件定義
設計
開発
6 テスト パフォーマンス
3
納品/リリース
64. パフォーマンスの問題
[アプリケーションの工程(ウォーターフォール)]
要件定義
設計
開発
6 テスト パフォーマンス
4
納品/リリース
65. パフォーマンスの問題
[アプリケーションの工程(ウォーターフォール)]
要件定義
設計
開発
6 テスト パフォーマンス
5
納品/リリース
66. パフォーマンスの問題
[アプリが重たくなる主な要因]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
6
6
67. パフォーマンスの問題
[アプリが重たくなる主な要因]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
処理 処理 処理
6
7
68. パフォーマンスの問題
[アプリが重たくなる主な要因]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
処理 処理 処理
6 マシン性能 マシン性能 マシン性能
8
69. パフォーマンスの問題
[アプリが重たくなる主な要因]
表示層 アプリケーション層 データ層
(UI) (ビジネスロジック) (DB)
処理 処理 処理
6 マシン性能 マシン性能 マシン性能
9 使いづらい
70. パフォーマンスの問題
[アプリが重たくなる主な要因]
通信量 通信量
処理 処理 処理
7 マシン性能 マシン性能 マシン性能
0 使いづらい
71. パフォーマンスの問題
[アプリが重たくなる主な要因]
通信量 通信量
処理 処理 処理
7 マシン性能 マシン性能 マシン性能
1 使いづらい
72. パフォーマンスの問題
重たい処理(場所)の特定
解決策検討
解決策の対応(実装)
7 対応前後の比較
2
73. パフォーマンスの問題
重たい処理(場所)の特定
解決策検討
解決策の対応(実装)
7 対応前後の比較
3
74. パフォーマンスの問題
[発表者が直面した問題(例)]
事例1
Adobe Flash で、ある一覧表示
(対応前)40秒→
事例2
ASP.NETで、ある一覧表示
(対応前)70秒→
7 事例3
C#(デスクトップアプリ)で画面Aから画面Bに遷移
4 (対応前)12秒→
75. パフォーマンスの問題
[発表者が直面した問題(例)]
事例1
Adobe Flash で、ある一覧表示
(対応前)40秒→(対応後)1.5秒
事例2
ASP.NETで、ある一覧表示
(対応前)70秒→ (対応後)5秒
7 事例3
C#(デスクトップアプリ)で画面Aから画面Bに遷移
5 (対応前)12秒→ (対応後)2秒
76. パフォーマンスの問題
[発表者が直面した問題(例)]
事例1
Adobe Flash で、ある一覧表示
(対応前)40秒→(対応後)1.5秒
事例2
ASP.NETで、ある一覧表示
(対応前)70秒→ (対応後)5秒
7 事例3
C#(デスクトップアプリ)で画面Aから画面Bに遷移
6 (対応前)12秒→ (対応後)2秒
77. パフォーマンスの問題
[発表者が直面した問題(例)]
事例1
Adobe Flash で、ある一覧表示
(対応前)40秒→(後)1.5秒
※(主な対応) 表示処理を分割した。
事例2
7 ASP.NETで、ある一覧表示
7 (対応前)70秒→(後)5秒
※(主な対応) 取得列をしぼった。
78. パフォーマンスの問題
[発表者が直面した問題(例)]
事例3
C#(デスクトップアプリ)で
画面Aから画面Bに画面遷移
(対応前)12秒→(後)2秒
※(主な対応) 画質を落とした
7
8
79. まとめ
パフォーマンス R vs C#
1. C#でRを動かすための準備
2. 計測方法
3. R vs C# (1+2+…)
7 4. パフォーマンスの問題
9
81. まとめ
得意なことは、それに任せよう
8
1
82. まとめ
得意なことは、それに任せよう
8
でも、無茶は⽌めよう。
2
83. まとめ
6〜10倍早い
sum()
30〜50倍早い
8
3 For文
84. まとめ
15人日
6〜10倍早い
sum() 1人日
30〜50倍早い
8
4 For文
85. まとめ
100万円
6〜10倍早い
sum() 10万円
30〜50倍早い
8
5 For文
86. まとめ
テスト
やり直し
6〜10倍早い
テスト
sum() 1人日
30〜50倍早い
8
6 For文
87. まとめ
得意なことは、それに任せよう
8
でも、無茶は⽌めよう。
7
88. 参考文献(1)
2012年6⽉プログラミング言語人気ランキング
http://www.tiobe.com/index.php/content/paperinf
o/tpci/
2012年6⽉「忍者アクセス解析」の国内シェア調査
http://www.samurai-factory.jp/info/2012
/20120703286.html
R.NET
http://rdotnet.codeplex.com/
Visual C# 2010 Express
http://www.microsoft.com/ja-
jp/dev/2010/product/express/
8
8
89. 参考文献(2)
第13回Tokyo.R「Rと.NET Framework」
(@kos59125)
https://docs.google.com/a/recyclebin.jp/viewer?a
=v&pid=explorer&srcid=0B3zrAV1SplSBOGRkYmRj
YWQtYWUwNi00MWIwLTg2N2ItMGQ3OGFlM2UwYj
U2&hl=en&chrome=true
8
9
92. 次回予告
1,2,3,4 <item>
りんご,みかん <id>1</id>
<name>りん
1,2,3,4 <item>
9 りんご,みかん <id>1</id>
<name>りん
2