SlideShare a Scribd company logo
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

PDF
Oracle Cloud Developers Meetup@東京
tuchimur
 
PPTX
Non è mai stato così facile condividere
exlab
 
PDF
Making conference
Nirmal Kant Paswan
 
PDF
Sejutakaos Project Proposal (ID)
danielpamungkas80
 
PPTX
Managing economic volatility
keshav lagwal
 
PDF
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson
 
PPT
Asaco pla salut 2013
ICS Catalunya Central
 
PPTX
Present simple afirmative
Emmanuel Palestras
 
Oracle Cloud Developers Meetup@東京
tuchimur
 
Non è mai stato così facile condividere
exlab
 
Making conference
Nirmal Kant Paswan
 
Sejutakaos Project Proposal (ID)
danielpamungkas80
 
Managing economic volatility
keshav lagwal
 
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson
 
Asaco pla salut 2013
ICS Catalunya Central
 
Present simple afirmative
Emmanuel Palestras
 

Viewers also liked (16)

PPTX
Bangaldesh Regional Dialects
Dr Nahin Mamun
 
PPT
Mathura of my Dreams by Shruti Goswami
Paarth Institute
 
PPTX
Level of Thinking
Dr Nahin Mamun
 
DOCX
From 'Fractal How' to Emergent Empowerment (2013 article)
Neil Thompson
 
PDF
Презентация к CCSS v2
Nikolay Ilyushkin
 
PDF
Einfuehrung in Elasticsearch
Florian Hopf
 
PPTX
Hosea American 13 June 2012
free_2flygirl
 
DOCX
Embarazo precoz
Merlehty Corona de Angulo
 
PPTX
Sound of Our Action
Dr Nahin Mamun
 
PDF
Presentation of the European Youth Parliament Republic of Moldova
EYP Moldova
 
PDF
Electrocardiografia per atenció primària (5). Bradiarímies
ICS Catalunya Central
 
PPTX
The Way It Works
Dr Nahin Mamun
 
PPTX
Come redere felice la tua vita in un'ora
Gio Garavello
 
PDF
The model of perfect competition
Lin Zaw
 
PPTX
Idea 1
Dr Nahin Mamun
 
PPTX
Leadership Templates
Dr Nahin Mamun
 
Bangaldesh Regional Dialects
Dr Nahin Mamun
 
Mathura of my Dreams by Shruti Goswami
Paarth Institute
 
Level of Thinking
Dr Nahin Mamun
 
From 'Fractal How' to Emergent Empowerment (2013 article)
Neil Thompson
 
Презентация к CCSS v2
Nikolay Ilyushkin
 
Einfuehrung in Elasticsearch
Florian Hopf
 
Hosea American 13 June 2012
free_2flygirl
 
Embarazo precoz
Merlehty Corona de Angulo
 
Sound of Our Action
Dr Nahin Mamun
 
Presentation of the European Youth Parliament Republic of Moldova
EYP Moldova
 
Electrocardiografia per atenció primària (5). Bradiarímies
ICS Catalunya Central
 
The Way It Works
Dr Nahin Mamun
 
Come redere felice la tua vita in un'ora
Gio Garavello
 
The model of perfect competition
Lin Zaw
 
Leadership Templates
Dr Nahin Mamun
 
Ad

Similar to TokyoR24 - PerformanceRvsC# (20)

PPT
20010127
小野 修司
 
PPTX
自己紹介とC# Devkitについて.pptx
hkharu0803
 
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
PPTX
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
PPT
20050903
小野 修司
 
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
PDF
C#への招待
Yusuke Matsushita
 
PPTX
The evolution of c#
leverages_event
 
PPTX
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Fujio Kojima
 
PPTX
Windows 8時代のアプリ開発
信之 岩永
 
PDF
LightSwitch で遊んでみた Rev. 2
Yoshitaka Seo
 
PDF
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
PPTX
C#の書き方
信之 岩永
 
PPTX
C#の書き方
信之 岩永
 
PDF
Rの高速化
弘毅 露崎
 
PDF
20160121 データサイエンティスト協会 木曜セミナー #5
Koichiro Sasaki
 
PDF
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
PPTX
つぶLT20121215
遼一 杉浦
 
PDF
SQL Server 2016 R Services + Microsoft R Server 技術資料
Koichiro Sasaki
 
PPTX
関数型言語初心者の俺がF#触ってみた
Takashi Nishisaki
 
20010127
小野 修司
 
自己紹介とC# Devkitについて.pptx
hkharu0803
 
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
20050903
小野 修司
 
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
C#への招待
Yusuke Matsushita
 
The evolution of c#
leverages_event
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Fujio Kojima
 
Windows 8時代のアプリ開発
信之 岩永
 
LightSwitch で遊んでみた Rev. 2
Yoshitaka Seo
 
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
C#の書き方
信之 岩永
 
C#の書き方
信之 岩永
 
Rの高速化
弘毅 露崎
 
20160121 データサイエンティスト協会 木曜セミナー #5
Koichiro Sasaki
 
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
つぶLT20121215
遼一 杉浦
 
SQL Server 2016 R Services + Microsoft R Server 技術資料
Koichiro Sasaki
 
関数型言語初心者の俺がF#触ってみた
Takashi Nishisaki
 
Ad

Recently uploaded (11)

PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 

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