Emscripten の性能(一例)

2016-11-04 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
先月末(2016-10-31)の記事「Emscripten で、HTML に変換
で書いた如く、
Emscripten の機能面は、何となく分かった(?)様な気がする。

そこで、性能面について調べてみた。


先々月末(2016-09-23)の記事「LuaJIT vs LLVM/Clang
で題材にしたもの:

即ち、
“フィボナッチ数を求めるプログラム”「fib_c.c」
を“emcc”でコンパイルして、JavaScript 及び、HTML に変換する。

これを、実行して処理時間を計測する。

ここで、
時間計測には、
C言語で正確にミリ秒マイクロ秒単位まで計測する方法
を参考にさせて頂いた。
つまり、
    struct timeval tS;
struct timeval tE;
long te, ts;
gettimeofday( &tS, NULL );
// ----- 此処の処理時間を計る
gettimeofday( &tE, NULL );

te=tE.tv_sec*1000+tE.tv_usec/1000;
ts=tS.tv_sec*1000+tS.tv_usec/1000;
printf( "Time : %06ld\n", te-ts );
の様に、
秒単位を千倍し、マイクロ秒単位を千分の1にして、整数加算。
すると、ミリ秒単位の時間になる。

で、テストプログラム・ソースは、
// ----- fib_c.c -----
// フィボナッチ数
#include
#include

#include
#include

int fib( int n ){
if( n < 2 ){
return n;
}else{
return fib(n-1) + fib(n-2);
}
}
int main( int argc, char *argv[] ){
struct timeval tS;
struct timeval tE;
long te, ts;
int n;

gettimeofday( &tS, NULL );
n = 39;
printf("%d\n", fib(n));
gettimeofday( &tE, NULL );

te=tE.tv_sec*1000+tE.tv_usec/1000;
ts=tS.tv_sec*1000+tS.tv_usec/1000;
printf( "Time : %06ld\n", te-ts );
return 0;
}
です。

これを、
emcc  fib_c.c  -o  fib_c.html
でコンパイルした。

実行結果は、・・・ ( 単位:秒 )

node fib_c.js ・・・・・ 1.14
Kinza fib_c.html ・・・ 1.27
Firefox 同上.html ・・・ 0.9

でした。

因みに、
LuaJIT では、・・・・・ 0.74
clamg ( -O 無 ) ・・・・ 0.5
clamg ( -O3  ) ・・・・ 0.38

LuaJIT vs LLVM/Clang」で、
  ・・・・・
  ・・・・・
  <紙>としては、約2倍と考える。
  ・・・・・
  ・・・・・
と書いたが、
更に、約1.2~1.7倍
でしょうか。

結果としては、
約2.5~3.5倍 と云うことで、我慢出来るかナ?

つまり、
Emscriptenを使おうとするのなら、
機能面で納得できるかどうか
でしょうか?


本日はここまで。


Emscripten 学習は続く???


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


161006
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク