SlideShare a Scribd company logo
1 of 92
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
                PHP
8
              ASP.NET
                Perl
今日のテーマについて
    [3層アプリケーション]
     表示層    アプリケーション層     データ層
     (UI)   (ビジネスロジック)     (DB)




                           MySQL
                         SQL Server
9
                         PostgreSQL
                          Oracle DB
今日のテーマについて
    [3層アプリケーション]
       表示層        アプリケーション層      データ層
       (UI)       (ビジネスロジック)      (DB)




1
      [Excel]+R    [Hadoop]+R   [Oracle]+R
0
      [.NET]+R     [Python]+R
     [C,C++]+R
今日のテーマについて
    [3層アプリケーション]
       表示層        アプリケーション層      データ層
       (UI)       (ビジネスロジック)      (DB)




1
      [Excel]+R    [Hadoop]+R   [Oracle]+R
1
      [.NET]+R     [Python]+R
     [C,C++]+R
今日のテーマについて
    [3層アプリケーション]
       表示層        アプリケーション層      データ層
       (UI)       (ビジネスロジック)      (DB)




1
      [Excel]+R    [Hadoop]+R   [Oracle]+R
2
      [.NET]+R     [Python]+R
     [C,C++]+R
今日のテーマについて
    [3層アプリケーション]
       表示層        アプリケーション層      データ層
       (UI)       (ビジネスロジック)      (DB)




1
      [Excel]+R    [Hadoop]+R   [Oracle]+R
3
      [.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つのインストールを⾏う。
1
7
C#でRを動かすための準備



     それ以前に、
     OSはWindows (xp,vista,7)


1
8
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つのインストールを⾏う。
2
1
C#でRを動かすための準備
     Visual C# 2010 Express
      ・マイクロソフトが提供する、
       無料のC#開発環境。
      ・製品版と比較すると機能が限定される
      (チーム連携不可、帳票作成不可など)
      ・使用期間制限は無し。
      (ただし、30日以上使用するには、
       ユーザー登録が必要)
2
2     ※本発表で使用したアプリは、
      Visual C# 2010 Expressで実装しました。
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール

    ※[VS   2010   Express] でネットで検索。




2
3
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール

    ※[VS   2010   Express] でネットで検索。




2
4
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール




2
5
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール




2
6
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール




2
7
C#でRを動かすための準備
    Visual C# 2010 Expressのインストール




2
8
C#でRを動かすための準備




2
9
C#でRを動かすための準備




       R.NET


3
0
C#でRを動かすための準備
     R.NET
       から     を
    操作するための
    ライブラリ

    ・CodePlexで配布中。
    ・ライセンス
3   フリーソフト(LGPL2.1)
1
C#でRを動かすための準備
     R.NET
       から      を
    操作するための
    ライブラリ

    開発者(家元):
     @kos59125 (名古屋在住)
3   参考資料:
     第13回Tokyo.R
2
    「Rと.NET Framework」
                         ※家元イメージ
C#でRを動かすための準備
     R.NET 補足:最新版R (2.15.1)でつなげて
            みようとすると、「Rlapack.dllが
            無いよ」というエラーになる




3
3
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
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}
3
7
計測方法


     > system.time({
     x <- 1:1000000
     y <- 0
     for (i in x) {y <- y + i}
     })
3
8
計測方法


     > 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#
     検証アプリについて




4
1
計測方法

      ボタンクリック



       計算開始     計算開始

       計算終了     計算終了
4
2     計測結果表示
計測方法

      ボタンクリック
                開始日時

       計算開始      計算開始

       計算終了      計算終了
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#




4
7
パフォーマンス 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:100000000
9 (3)          s <- as.double(x)
               y <- sum(s)
パフォーマンス R vs C#
     検証アプリについて




5
0
パフォーマンス R vs C#
     検証アプリについて




5
1
パフォーマンス R vs C#
     検証アプリについて




5
2
パフォーマンス 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
パフォーマンス R vs C#




5
4
パフォーマンス 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     ×          ×
パフォーマンス 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     ×          ×
パフォーマンス R vs C#
     計測結果




                sum()
               30〜50倍早い
5
7
                For文
パフォーマンス R vs C#
     計測結果
     [1位]
               6〜10倍早い


     [2位]       sum()
               30〜50倍早い
5
8
     [3位]       For文
パフォーマンス R vs C#




5
9
パフォーマンス R vs C#
    1.   C#でRを動かすための準備
    2.   計測方法
    3.   R vs C# (1+2+…)
6   4.   パフォーマンスの問題
0
パフォーマンス R vs C#


      パフォーマンスの問題
    (実際のお仕事で直面した)
6
1
パフォーマンスの問題
    [アプリケーションの工程(ウォーターフォール)]

        要件定義

         設計

         開発

6        テスト
2
       納品/リリース
パフォーマンスの問題
    [アプリケーションの工程(ウォーターフォール)]

        要件定義

         設計

         開発

6        テスト     パフォーマンス
3
       納品/リリース
パフォーマンスの問題
    [アプリケーションの工程(ウォーターフォール)]

        要件定義

         設計

         開発

6        テスト     パフォーマンス
4
       納品/リリース
パフォーマンスの問題
    [アプリケーションの工程(ウォーターフォール)]

        要件定義

         設計

         開発

6        テスト     パフォーマンス
5
       納品/リリース
パフォーマンスの問題
    [アプリが重たくなる主な要因]

     表示層    アプリケーション層    データ層
     (UI)   (ビジネスロジック)    (DB)




6
6
パフォーマンスの問題
    [アプリが重たくなる主な要因]

     表示層    アプリケーション層    データ層
     (UI)   (ビジネスロジック)    (DB)




      処理       処理         処理
6
7
パフォーマンスの問題
    [アプリが重たくなる主な要因]

      表示層    アプリケーション層    データ層
      (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秒
     ※(主な対応) 表示処理を分割した。

     事例2
7    ASP.NETで、ある一覧表示
7    (対応前)70秒→(後)5秒
     ※(主な対応) 取得列をしぼった。
パフォーマンスの問題
    [発表者が直面した問題(例)]
     事例3
     C#(デスクトップアプリ)で
     画面Aから画面Bに画面遷移
     (対応前)12秒→(後)2秒
     ※(主な対応) 画質を落とした

7
8
まとめ

    パフォーマンス R vs C#
    1.   C#でRを動かすための準備
    2.   計測方法
    3.   R vs C# (1+2+…)
7   4.   パフォーマンスの問題
9
まとめ




8
0
まとめ




    得意なことは、それに任せよう
8
1
まとめ




    得意なことは、それに任せよう
8
      でも、無茶は⽌めよう。
2
まとめ


      6〜10倍早い


            sum()
      30〜50倍早い
8
3           For文
まとめ

                      15人日
      6〜10倍早い


            sum()   1人日
      30〜50倍早い
8
4           For文
まとめ

                      100万円
      6〜10倍早い


            sum()   10万円
      30〜50倍早い
8
5           For文
まとめ
                       テスト
                      やり直し
      6〜10倍早い

                    テスト
            sum()   1人日
      30〜50倍早い
8
6           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/
8
8
参考文献(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
9
0
9
1
次回予告

     1,2,3,4 <item>
     りんご,みかん  <id>1</id>
              <name>りん




     1,2,3,4 <item>
9    りんご,みかん  <id>1</id>
              <name>りん
2

More Related Content

Viewers also liked

Презентация к CCSS v2
Презентация к CCSS v2Презентация к CCSS v2
Презентация к CCSS v2
Nikolay Ilyushkin
 

Viewers also liked (16)

Bangaldesh Regional Dialects
Bangaldesh Regional DialectsBangaldesh Regional Dialects
Bangaldesh Regional Dialects
 
Mathura of my Dreams by Shruti Goswami
Mathura of my Dreams by Shruti GoswamiMathura of my Dreams by Shruti Goswami
Mathura of my Dreams by Shruti Goswami
 
Level of Thinking
Level of ThinkingLevel of Thinking
Level of Thinking
 
From 'Fractal How' to Emergent Empowerment (2013 article)
From 'Fractal How' to Emergent Empowerment (2013 article)From 'Fractal How' to Emergent Empowerment (2013 article)
From 'Fractal How' to Emergent Empowerment (2013 article)
 
Презентация к CCSS v2
Презентация к CCSS v2Презентация к CCSS v2
Презентация к CCSS v2
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in Elasticsearch
 
Hosea American 13 June 2012
Hosea American 13 June 2012Hosea American 13 June 2012
Hosea American 13 June 2012
 
Embarazo precoz
Embarazo precozEmbarazo precoz
Embarazo precoz
 
Sound of Our Action
Sound of Our ActionSound of Our Action
Sound of Our Action
 
Presentation of the European Youth Parliament Republic of Moldova
Presentation of the European Youth Parliament Republic of MoldovaPresentation of the European Youth Parliament Republic of Moldova
Presentation of the European Youth Parliament Republic of Moldova
 
Electrocardiografia per atenció primària (5). Bradiarímies
Electrocardiografia per atenció primària (5). BradiarímiesElectrocardiografia per atenció primària (5). Bradiarímies
Electrocardiografia per atenció primària (5). Bradiarímies
 
The Way It Works
The Way It WorksThe Way It Works
The Way It Works
 
Come redere felice la tua vita in un'ora
Come redere felice la tua vita in un'oraCome redere felice la tua vita in un'ora
Come redere felice la tua vita in un'ora
 
The model of perfect competition
The model of perfect competitionThe model of perfect competition
The model of perfect competition
 
Idea 1
Idea 1Idea 1
Idea 1
 
Leadership Templates
Leadership TemplatesLeadership Templates
Leadership Templates
 

Similar to TokyoR24 - PerformanceRvsC#

10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
 
サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践
TakefumiYoshii
 

Similar to TokyoR24 - PerformanceRvsC# (20)

10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5
 
New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11
 
○R連携g
○R連携g○R連携g
○R連携g
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
ji-2. 計算
ji-2. 計算ji-2. 計算
ji-2. 計算
 
SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
 
Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門
 
サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Empower every App and every Developer in a Mobile-first, Cloud-first World.Empower every App and every Developer in a Mobile-first, Cloud-first World.
Empower every App and every Developer in a Mobile-first, Cloud-first World.
 

Recently uploaded

Recently uploaded (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

TokyoR24 - PerformanceRvsC#

  • 1. 1
  • 2. 発表者について ta2c = + +  名前:くらもと たつし ta2c  趣味:アイスクリームを食べる 2 (年間350個)  仕事:表示層(UI層)の開発 (Adobe Flash, Microsoft Silverlightなど)
  • 3. 発表者について ta2c = + +  なぜTokyo.Rにきたか?  大学院生のとき 時系列解析 を専攻 3  今年R言語に出会い、興味を持った。 なにかお仕事で使えないか。
  • 4. 今日のテーマについて パフォーマンス R vs C# 4
  • 5. 今日のテーマについて パフォーマンス R vs C# このテーマを選んだ理由 5
  • 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
  • 18. C#でRを動かすための準備 それ以前に、 OSはWindows (xp,vista,7) 1 8
  • 19. C#でRを動かすための準備 Windows Mac Android iPhone 5% 4% 8% 2012年6⽉1ヶ⽉間 「忍者アクセス解析」 の国内シェア調査。 1 83% (データ数4.6億) 9 引用先:サムライファクトリー
  • 20. C#でRを動かすための準備 2 Windows以外の 0 17%の人たち、ごめんなさい
  • 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
  • 25. C#でRを動かすための準備 Visual C# 2010 Expressのインストール 2 5
  • 26. C#でRを動かすための準備 Visual C# 2010 Expressのインストール 2 6
  • 27. C#でRを動かすための準備 Visual C# 2010 Expressのインストール 2 7
  • 28. C#でRを動かすための準備 Visual C# 2010 Expressのインストール 2 8
  • 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
  • 41. パフォーマンス R vs C# 検証アプリについて 4 1
  • 42. 計測方法 ボタンクリック 計算開始 計算開始 計算終了 計算終了 4 2 計測結果表示
  • 43. 計測方法 ボタンクリック 開始日時 計算開始 計算開始 計算終了 計算終了 4 終了日時 3 ※この差分を 計測結果表示 計測結果とす る。
  • 44. パフォーマンス R vs C# 1. C#でRを動かすための準備 2. 計測方法 3. R vs C# (1+2+…) 4 4. パフォーマンスの問題 4
  • 45. パフォーマンス R vs C# 表示(UI)層 作成 × ○ 4 統計処理 ○ × 5 1+1= ○ ○
  • 46. パフォーマンス R vs C# RとC# どちらでも書ける処理 同じ処理をするのなら 4 どちらが早いか? 6
  • 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)
  • 50. パフォーマンス R vs C# 検証アプリについて 5 0
  • 51. パフォーマンス R vs C# 検証アプリについて 5 1
  • 52. パフォーマンス R vs C# 検証アプリについて 5 2
  • 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 × ×
  • 57. パフォーマンス R vs C# 計測結果 sum() 30〜50倍早い 5 7 For文
  • 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
  • 61. パフォーマンス R vs C# パフォーマンスの問題 (実際のお仕事で直面した) 6 1
  • 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
  • 90. 9 0
  • 91. 9 1
  • 92. 次回予告 1,2,3,4 <item> りんご,みかん <id>1</id> <name>りん 1,2,3,4 <item> 9 りんご,みかん <id>1</id> <name>りん 2