SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
実戦 Emscripten
               Practical Emscripten




                                      ushiroad

12年1月24日火曜日
0:20




       Whats’s Emscripten?




        (大部分の)作者

         Alon Zakaiさん
          on Mozilla Mobile Team

           既存のC/C++資産を
         Webに持ち込む 銀の弾丸


                                   http://emscripten.org/
12年1月24日火曜日
0:50




       Whats’s Emscripten?

        LLVM to Javascript Compiler


                                      LLVM bitcode    Javascript
       C code
  int main(){         clang               load       $1 = HEAP[$2];

    ..........
  }                                       icmp        $3 = $1 < $4;



                                         結果としてC/C++コードを移植できる

       •LLVMの命令をJSでシミュレートする
       • 人間的な 移植作業を自動化するのはさすがに難しい
       •当然、オーバーヘッドが出てくる(短所)
       •解析部分は 本物の Cコンパイラを使える(長所)
12年1月24日火曜日
Emscripten DOES NOT



  #include <stdio.h>                 function main() {
  #include <stdlib.h>                   var i;
                                     	 var buf = "         Hello!";
  int main() {                       	 for (i = 0;i < 10;i++) {
  	 int i;                           	 	 puts(buf.substring(9-i));
  	 char* buf = "         Hello!";   	 }
  	 for (i = 0;i < 10;i++) {
  	 	 puts(buf + (9-i));             	   return 0;
  	 }                                }

  	   return 0;
  }




12年1月24日火曜日
function _main() {
   But……              var __label__;
                      __label__ = -1;
                      while(1) switch(__label__) {
                        case -1: // $0
                          var $1;
                          var $i;
                          var $buf;
                          $1=0;
                          $buf=((__str)|0);
                          $i=0;
                          __label__ = 1; break;
  for (i = 0;           case 1: // $2
                          var $3=$i;
            i < 10;       var $4=((($3))|0) < 10;
            i++)          if ($4) { __label__ = 2; break; } else
                    { __label__ = 4; break; }
                        case 2: // $5
                           :
                           :
                        case 3: // $11
 ちなみにメモリ、ポインタは
                          var $12=$i;
 配列でシミュレート                var $13=((($12)+1)|0);
12年1月24日火曜日               $i=$13;
1:40




       パフォーマンス

       実用的な速さで動くの?
        Test program
         30600点の座標変換、照明計算
          Vector × Matrix
          Vector・Vector


                            JS “Native”
                              VS


                            C ➡ JS



12年1月24日火曜日
パフォーマンス

              60ms


              45ms


              30ms


              15ms
 faster

               0ms
                     Chrome 16           Firefox 10

                          JS     Emscripten


12年1月24日火曜日
パフォーマンス

              700ms
                                                       ➡ 少し昔のJavascript
                                                          よりは格段に速い
              525ms



              350ms



              175ms



                0ms
                      Chrome 16        Firefox 10      Firefox 2.0
                                                          JITなしの頃は……


                                  JS      Emscripten


12年1月24日火曜日
まとめ: Emscripten を使うべきか?



              判断のポイント

               対価: 実行速度(手書きより数倍遅くなる)

               得られるもの: 莫大な移植作業の時間 ➡ 一瞬




                   数倍の高速化のために莫大な時間を支払って手書きする?
                        (もちろん、そちらを選択すべき場合もある)

12年1月24日火曜日
Demo



              名前が被ってるのでそのうち変えます




               JSViz
                http://ushiroad.com/jsviz/




12年1月24日火曜日
Demo


                    GraphViz

     digraph {
       A -> B -> C;
       A -> C -> D;
       A -> D;
       D -> E -> F -> B;
     }



12年1月24日火曜日
3:00




       Demo



               GraphViz
                   +
              Interactive
                   +
               Animation

12年1月24日火曜日
!ank y"



 http://ushiroad.com/ にEmscriptenのインストール方法等の記事があります
 が、Emscripten の変化が激しすぎて既に古くなっているので要注意。
 LLVMのバージョン、JSエンジンの種類に注意。                           ushiroad

12年1月24日火曜日

Más contenido relacionado

Destacado

Cuento del mega extrem
Cuento del mega extremCuento del mega extrem
Cuento del mega extremjulen102011
 
Universidad central del ecuador
Universidad central del ecuadorUniversidad central del ecuador
Universidad central del ecuadorLourdesLombeida
 
Apresentação internet cidadão
Apresentação internet cidadãoApresentação internet cidadão
Apresentação internet cidadãoSabrina_Tavares
 
Projecte d'ensenyament de la llengua d'acollida
Projecte d'ensenyament de la llengua d'acollidaProjecte d'ensenyament de la llengua d'acollida
Projecte d'ensenyament de la llengua d'acollidasocietatdigital
 
Proyecto innovador en la economía
Proyecto innovador en la economíaProyecto innovador en la economía
Proyecto innovador en la economíadagonzalez9
 
El papel de las instituciones universitarias y de investigación occidentales ...
El papel de las instituciones universitarias y de investigación occidentales ...El papel de las instituciones universitarias y de investigación occidentales ...
El papel de las instituciones universitarias y de investigación occidentales ...Natalia Andújar
 
Proyecto educación física y ética.
Proyecto educación física y ética.Proyecto educación física y ética.
Proyecto educación física y ética.Silvia Artiques
 
Cunducri blanca
Cunducri blancaCunducri blanca
Cunducri blancablanca1996
 
Amasa-Villabona herriaren deskripzioa. Marina-Igor
Amasa-Villabona herriaren deskripzioa. Marina-IgorAmasa-Villabona herriaren deskripzioa. Marina-Igor
Amasa-Villabona herriaren deskripzioa. Marina-IgorFLEMINGVILLABONA
 
Os portugues no oriente 8º6ª (liliana, diogo mateus leandro daniel e joana)
Os portugues no oriente   8º6ª (liliana, diogo mateus leandro daniel e joana)Os portugues no oriente   8º6ª (liliana, diogo mateus leandro daniel e joana)
Os portugues no oriente 8º6ª (liliana, diogo mateus leandro daniel e joana)luisaprof
 

Destacado (20)

La célula jp
La célula jpLa célula jp
La célula jp
 
Energia solar
Energia solarEnergia solar
Energia solar
 
Soinua eta zaratea
Soinua eta zarateaSoinua eta zaratea
Soinua eta zaratea
 
Cuento del mega extrem
Cuento del mega extremCuento del mega extrem
Cuento del mega extrem
 
Mirikol barraskiloa
Mirikol barraskiloaMirikol barraskiloa
Mirikol barraskiloa
 
Baaskaa 1
Baaskaa 1Baaskaa 1
Baaskaa 1
 
Universidad central del ecuador
Universidad central del ecuadorUniversidad central del ecuador
Universidad central del ecuador
 
Apresentação internet cidadão
Apresentação internet cidadãoApresentação internet cidadão
Apresentação internet cidadão
 
Projecte d'ensenyament de la llengua d'acollida
Projecte d'ensenyament de la llengua d'acollidaProjecte d'ensenyament de la llengua d'acollida
Projecte d'ensenyament de la llengua d'acollida
 
Entorno visual p2
Entorno visual p2Entorno visual p2
Entorno visual p2
 
ALASKA
ALASKAALASKA
ALASKA
 
Presentacion excel3
Presentacion excel3Presentacion excel3
Presentacion excel3
 
Mapa conceptua lmio11
Mapa conceptua lmio11Mapa conceptua lmio11
Mapa conceptua lmio11
 
Proyecto innovador en la economía
Proyecto innovador en la economíaProyecto innovador en la economía
Proyecto innovador en la economía
 
El papel de las instituciones universitarias y de investigación occidentales ...
El papel de las instituciones universitarias y de investigación occidentales ...El papel de las instituciones universitarias y de investigación occidentales ...
El papel de las instituciones universitarias y de investigación occidentales ...
 
Socialização de conteúdo2
Socialização de conteúdo2Socialização de conteúdo2
Socialização de conteúdo2
 
Proyecto educación física y ética.
Proyecto educación física y ética.Proyecto educación física y ética.
Proyecto educación física y ética.
 
Cunducri blanca
Cunducri blancaCunducri blanca
Cunducri blanca
 
Amasa-Villabona herriaren deskripzioa. Marina-Igor
Amasa-Villabona herriaren deskripzioa. Marina-IgorAmasa-Villabona herriaren deskripzioa. Marina-Igor
Amasa-Villabona herriaren deskripzioa. Marina-Igor
 
Os portugues no oriente 8º6ª (liliana, diogo mateus leandro daniel e joana)
Os portugues no oriente   8º6ª (liliana, diogo mateus leandro daniel e joana)Os portugues no oriente   8º6ª (liliana, diogo mateus leandro daniel e joana)
Os portugues no oriente 8º6ª (liliana, diogo mateus leandro daniel e joana)
 

Similar a Practical Emscripten - Mozilla Vision 2012

JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+Hiroaki Okubo
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろTakuya Tsuchida
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)parrotstudio
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化suno88
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806swkagami
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & WalkthroughIsaac Mathis
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
函館IKA Eclipse活用術
函館IKA Eclipse活用術函館IKA Eclipse活用術
函館IKA Eclipse活用術Masahiro Wakame
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方浩平 渡邉
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Takashi J OZAKI
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 

Similar a Practical Emscripten - Mozilla Vision 2012 (20)

JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
函館IKA Eclipse活用術
函館IKA Eclipse活用術函館IKA Eclipse活用術
函館IKA Eclipse活用術
 
Cross Platform Make
Cross Platform MakeCross Platform Make
Cross Platform Make
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
boost - std - C#
boost - std - C#boost - std - C#
boost - std - C#
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Último (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Practical Emscripten - Mozilla Vision 2012

  • 1. 実戦 Emscripten Practical Emscripten ushiroad 12年1月24日火曜日
  • 2. 0:20 Whats’s Emscripten? (大部分の)作者 Alon Zakaiさん on Mozilla Mobile Team 既存のC/C++資産を Webに持ち込む 銀の弾丸 http://emscripten.org/ 12年1月24日火曜日
  • 3. 0:50 Whats’s Emscripten? LLVM to Javascript Compiler LLVM bitcode Javascript C code int main(){ clang load $1 = HEAP[$2]; .......... } icmp $3 = $1 < $4; 結果としてC/C++コードを移植できる •LLVMの命令をJSでシミュレートする • 人間的な 移植作業を自動化するのはさすがに難しい •当然、オーバーヘッドが出てくる(短所) •解析部分は 本物の Cコンパイラを使える(長所) 12年1月24日火曜日
  • 4. Emscripten DOES NOT #include <stdio.h> function main() { #include <stdlib.h> var i; var buf = " Hello!"; int main() { for (i = 0;i < 10;i++) { int i; puts(buf.substring(9-i)); char* buf = " Hello!"; } for (i = 0;i < 10;i++) { puts(buf + (9-i)); return 0; } } return 0; } 12年1月24日火曜日
  • 5. function _main() { But…… var __label__; __label__ = -1; while(1) switch(__label__) { case -1: // $0 var $1; var $i; var $buf; $1=0; $buf=((__str)|0); $i=0; __label__ = 1; break; for (i = 0; case 1: // $2 var $3=$i; i < 10; var $4=((($3))|0) < 10; i++) if ($4) { __label__ = 2; break; } else { __label__ = 4; break; } case 2: // $5 : : case 3: // $11 ちなみにメモリ、ポインタは var $12=$i; 配列でシミュレート var $13=((($12)+1)|0); 12年1月24日火曜日 $i=$13;
  • 6. 1:40 パフォーマンス 実用的な速さで動くの? Test program 30600点の座標変換、照明計算 Vector × Matrix Vector・Vector JS “Native” VS C ➡ JS 12年1月24日火曜日
  • 7. パフォーマンス 60ms 45ms 30ms 15ms faster 0ms Chrome 16 Firefox 10 JS Emscripten 12年1月24日火曜日
  • 8. パフォーマンス 700ms ➡ 少し昔のJavascript よりは格段に速い 525ms 350ms 175ms 0ms Chrome 16 Firefox 10 Firefox 2.0 JITなしの頃は…… JS Emscripten 12年1月24日火曜日
  • 9. まとめ: Emscripten を使うべきか? 判断のポイント 対価: 実行速度(手書きより数倍遅くなる) 得られるもの: 莫大な移植作業の時間 ➡ 一瞬 数倍の高速化のために莫大な時間を支払って手書きする? (もちろん、そちらを選択すべき場合もある) 12年1月24日火曜日
  • 10. Demo 名前が被ってるのでそのうち変えます JSViz http://ushiroad.com/jsviz/ 12年1月24日火曜日
  • 11. Demo GraphViz digraph { A -> B -> C; A -> C -> D; A -> D; D -> E -> F -> B; } 12年1月24日火曜日
  • 12. 3:00 Demo GraphViz + Interactive + Animation 12年1月24日火曜日
  • 13. !ank y" http://ushiroad.com/ にEmscriptenのインストール方法等の記事があります が、Emscripten の変化が激しすぎて既に古くなっているので要注意。 LLVMのバージョン、JSエンジンの種類に注意。 ushiroad 12年1月24日火曜日