• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
TokyoR24 - PerformanceRvsC#
 

TokyoR24 - PerformanceRvsC#

on

  • 1,359 views

 

Statistics

Views

Total Views
1,359
Views on SlideShare
1,343
Embed Views
16

Actions

Likes
2
Downloads
0
Comments
0

3 Embeds 16

http://dl.dropboxusercontent.com 10
https://twitter.com 5
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    TokyoR24 - PerformanceRvsC# TokyoR24 - PerformanceRvsC# Presentation Transcript

    • 1
    • 発表者について ta2c = + +  名前:くらもと たつし ta2c  趣味:アイスクリームを食べる2 (年間350個)  仕事:表示層(UI層)の開発 (Adobe Flash, Microsoft Silverlightなど)
    • 発表者について ta2c = + +  なぜTokyo.Rにきたか?  大学院生のとき 時系列解析 を専攻3  今年R言語に出会い、興味を持った。 なにかお仕事で使えないか。
    • 今日のテーマについて パフォーマンス R vs C#4
    • 今日のテーマについて パフォーマンス R vs C# このテーマを選んだ理由5
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)6
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) Webブラウザ(HTML)7 Webブラウザの プラグイン デスクトップアプリ
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) JAVA PHP8 ASP.NET Perl
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) MySQL SQL Server9 PostgreSQL Oracle DB
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)1 [Excel]+R [Hadoop]+R [Oracle]+R0 [.NET]+R [Python]+R [C,C++]+R
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)1 [Excel]+R [Hadoop]+R [Oracle]+R1 [.NET]+R [Python]+R [C,C++]+R
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)1 [Excel]+R [Hadoop]+R [Oracle]+R2 [.NET]+R [Python]+R [C,C++]+R
    • 今日のテーマについて [3層アプリケーション] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)1 [Excel]+R [Hadoop]+R [Oracle]+R3 [.NET]+R [Python]+R [C,C++]+R
    • 今日のテーマについて 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
    • 今日のテーマについて パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)1 4. パフォーマンスの問題5
    • パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)1 4. パフォーマンスの問題6
    • C#でRを動かすための準備 1. Visual C# 2010 Express 2. R.NET の2つのインストールを⾏う。17
    • C#でRを動かすための準備 それ以前に、 OSはWindows (xp,vista,7)18
    • C#でRを動かすための準備 Windows Mac Android iPhone 5% 4% 8% 2012年6⽉1ヶ⽉間 「忍者アクセス解析」 の国内シェア調査。1 83% (データ数4.6億)9 引用先:サムライファクトリー
    • C#でRを動かすための準備2 Windows以外の0 17%の人たち、ごめんなさい
    • C#でRを動かすための準備 1. Visual C# 2010 Express 2. R.NET の2つのインストールを⾏う。21
    • C#でRを動かすための準備 Visual C# 2010 Express ・マイクロソフトが提供する、 無料のC#開発環境。 ・製品版と比較すると機能が限定される (チーム連携不可、帳票作成不可など) ・使用期間制限は無し。 (ただし、30日以上使用するには、 ユーザー登録が必要)22 ※本発表で使用したアプリは、 Visual C# 2010 Expressで実装しました。
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール ※[VS 2010 Express] でネットで検索。23
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール ※[VS 2010 Express] でネットで検索。24
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール25
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール26
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール27
    • C#でRを動かすための準備 Visual C# 2010 Expressのインストール28
    • C#でRを動かすための準備29
    • C#でRを動かすための準備 R.NET30
    • C#でRを動かすための準備 R.NET から を 操作するための ライブラリ ・CodePlexで配布中。 ・ライセンス3 フリーソフト(LGPL2.1)1
    • C#でRを動かすための準備 R.NET から を 操作するための ライブラリ 開発者(家元): @kos59125 (名古屋在住)3 参考資料: 第13回Tokyo.R2 「Rと.NET Framework」 ※家元イメージ
    • C#でRを動かすための準備 R.NET 補足:最新版R (2.15.1)でつなげて みようとすると、「Rlapack.dllが 無いよ」というエラーになる33
    • 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"))34
    • 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"))
    • パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)3 4. パフォーマンスの問題6
    • 計測方法 > x <- 1:1000000 y <- 0 for (i in x) {y <- y + i}37
    • 計測方法 > system.time({ x <- 1:1000000 y <- 0 for (i in x) {y <- y + i} })38
    • 計測方法 > system.time({ x <- 1:1000000 y <- 0 for (i in x) {y <- y + i} })3 ユーザ システム 経過9 2.28 0.00 2.28
    • 計測方法 今回はC#で計測するので これは使用しない。 > system.time({ x <- 1:1000000 y <- 0 for (i in x) {y <- y + i} })4 ユーザ システム 経過0 2.28 0.00 2.28
    • パフォーマンス R vs C# 検証アプリについて41
    • 計測方法 ボタンクリック 計算開始 計算開始 計算終了 計算終了42 計測結果表示
    • 計測方法 ボタンクリック 開始日時 計算開始 計算開始 計算終了 計算終了4 終了日時3 ※この差分を 計測結果表示 計測結果とす る。
    • パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)4 4. パフォーマンスの問題4
    • パフォーマンス R vs C# 表示(UI)層 作成 × ○4 統計処理 ○ ×5 1+1= ○ ○
    • パフォーマンス R vs C# RとC# どちらでも書ける処理 同じ処理をするのなら4 どちらが早いか?6
    • パフォーマンス R vs C#47
    • パフォーマンス R vs C#4 (n=1, 10, 100, 1000, 1万, 10万, …,100兆, 1000兆, 1京)8
    • パフォーマンス R vs C# (1) For文で加算する ‘For文で加算する’ (2) x <- 1:100000000 y <- 0 for (i in x) {y <- y + i}4 ‘ベクトルでsum’ x <- 1:1000000009 (3) s <- as.double(x) y <- sum(s)
    • パフォーマンス R vs C# 検証アプリについて50
    • パフォーマンス R vs C# 検証アプリについて51
    • パフォーマンス R vs C# 検証アプリについて52
    • パフォーマンス 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)53
    • パフォーマンス R vs C#54
    • パフォーマンス 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.4195 1億 0.384 × 2.3395 10億 3.674 × エラー 100億 21.001 × ×
    • パフォーマンス 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.4195 1億 0.384 × 2.3396 10億 3.674 × エラー 100億 21.001 × ×
    • パフォーマンス R vs C# 計測結果 sum() 30〜50倍早い57 For文
    • パフォーマンス R vs C# 計測結果 [1位] 6〜10倍早い [2位] sum() 30〜50倍早い58 [3位] For文
    • パフォーマンス R vs C#59
    • パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)6 4. パフォーマンスの問題0
    • パフォーマンス R vs C# パフォーマンスの問題 (実際のお仕事で直面した)61
    • パフォーマンスの問題 [アプリケーションの工程(ウォーターフォール)] 要件定義 設計 開発6 テスト2 納品/リリース
    • パフォーマンスの問題 [アプリケーションの工程(ウォーターフォール)] 要件定義 設計 開発6 テスト パフォーマンス3 納品/リリース
    • パフォーマンスの問題 [アプリケーションの工程(ウォーターフォール)] 要件定義 設計 開発6 テスト パフォーマンス4 納品/リリース
    • パフォーマンスの問題 [アプリケーションの工程(ウォーターフォール)] 要件定義 設計 開発6 テスト パフォーマンス5 納品/リリース
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB)66
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) 処理 処理 処理67
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) 処理 処理 処理6 マシン性能 マシン性能 マシン性能8
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 表示層 アプリケーション層 データ層 (UI) (ビジネスロジック) (DB) 処理 処理 処理6 マシン性能 マシン性能 マシン性能9 使いづらい
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 通信量 通信量 処理 処理 処理7 マシン性能 マシン性能 マシン性能0 使いづらい
    • パフォーマンスの問題 [アプリが重たくなる主な要因] 通信量 通信量 処理 処理 処理7 マシン性能 マシン性能 マシン性能1 使いづらい
    • パフォーマンスの問題 重たい処理(場所)の特定 解決策検討 解決策の対応(実装)7 対応前後の比較2
    • パフォーマンスの問題 重たい処理(場所)の特定 解決策検討 解決策の対応(実装)7 対応前後の比較3
    • パフォーマンスの問題 [発表者が直面した問題(例)]  事例1 Adobe Flash で、ある一覧表示 (対応前)40秒→  事例2 ASP.NETで、ある一覧表示 (対応前)70秒→7  事例3 C#(デスクトップアプリ)で画面Aから画面Bに遷移4 (対応前)12秒→
    • パフォーマンスの問題 [発表者が直面した問題(例)]  事例1 Adobe Flash で、ある一覧表示 (対応前)40秒→(対応後)1.5秒  事例2 ASP.NETで、ある一覧表示 (対応前)70秒→ (対応後)5秒7  事例3 C#(デスクトップアプリ)で画面Aから画面Bに遷移5 (対応前)12秒→ (対応後)2秒
    • パフォーマンスの問題 [発表者が直面した問題(例)]  事例1 Adobe Flash で、ある一覧表示 (対応前)40秒→(対応後)1.5秒  事例2 ASP.NETで、ある一覧表示 (対応前)70秒→ (対応後)5秒7  事例3 C#(デスクトップアプリ)で画面Aから画面Bに遷移6 (対応前)12秒→ (対応後)2秒
    • パフォーマンスの問題 [発表者が直面した問題(例)]  事例1 Adobe Flash で、ある一覧表示 (対応前)40秒→(後)1.5秒 ※(主な対応) 表示処理を分割した。  事例27 ASP.NETで、ある一覧表示7 (対応前)70秒→(後)5秒 ※(主な対応) 取得列をしぼった。
    • パフォーマンスの問題 [発表者が直面した問題(例)]  事例3 C#(デスクトップアプリ)で 画面Aから画面Bに画面遷移 (対応前)12秒→(後)2秒 ※(主な対応) 画質を落とした78
    • まとめ パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…)7 4. パフォーマンスの問題9
    • まとめ80
    • まとめ 得意なことは、それに任せよう81
    • まとめ 得意なことは、それに任せよう8 でも、無茶は⽌めよう。2
    • まとめ 6〜10倍早い sum() 30〜50倍早い83 For文
    • まとめ 15人日 6〜10倍早い sum() 1人日 30〜50倍早い84 For文
    • まとめ 100万円 6〜10倍早い sum() 10万円 30〜50倍早い85 For文
    • まとめ テスト やり直し 6〜10倍早い テスト sum() 1人日 30〜50倍早い86 For文
    • まとめ 得意なことは、それに任せよう8 でも、無茶は⽌めよう。7
    • 参考文献(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/88
    • 参考文献(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=true89
    • 90
    • 91
    • 次回予告 1,2,3,4 <item> りんご,みかん <id>1</id> <name>りん 1,2,3,4 <item>9 りんご,みかん <id>1</id> <name>りん2