任天堂「今後C++は捨てJavaScriptで開発していく」 (887レス)
上下前次1-新
426: 2013/04/03(水)10:39 AAS
>>425
リンク先をざっと見てみましたけど、JavaScriptのコードをCと同等の速度で
実行できるってのはどこに載ってるんでしょうか。
427: 2013/04/03(水)10:39 AAS
emscriptenの出力コードはjavascript上で機械語コードをエミュレートするだけなんだけど
428: 2013/04/03(水)10:44 AAS
>>425
ドヤ顔でこれかよ・・・
429: 2013/04/03(水)10:45 AAS
>>425
それある程度の速度が出るのはJITコンパイルが前提だよ
上で馬鹿がわめいているような事前コンパイルでJavascirptを高速なネイティブコードに変換するのは難しい
430: 2013/04/03(水)10:48 AAS
コンパイラは文字列操作してるだけ。
C:製Cコンパイラと同じ文字列操作をすれば出力は同じで、速度も同じになるのは当たり前。
アセンブリ言語 - Wikipedia
次に示す機械語は AL レジスタに 01100001 というデータをロードする。
10110000 01100001
このバイナリコードを人間が読みやすいように十六進法で表現すると次のようになる。
B0 61
ここで、B0 は「ALに後続の値をコピーする」ことを意味し、61 は 01100001 を十六進法で表したものである。
インテルのアセンブリ言語では、この種の命令に MOV というニーモニックを割り当てており、
セミコロン以下に説明的コメントを添えたアセンブリ言語での表現は次のようになる。
MOV AL, 61h ; Load AL with 97 decimal (61 hex)
この場合、定数61Hがソース、レジスタALがデスティネーションに該当し、命令が実行されると、定数61Hが、レジスタALに単純に格納される。
これが人間にとってはさらに読みやすく覚えやすい。
431(1): 425 2013/04/03(水)10:51 AAS
間違えるな。
Emscriptenで変換したコードが速いと言ってない。
JavaScript製Cコンパイラで、C:製Cコンパイラと同じバイナリ(=同じ速度のバイナリ)を作り出せるかだ。
432: 2013/04/03(水)10:52 AAS
真面目にJSでのゲーム開発を議論するスレかとおもいきや、普通の初心者スレになっているとは。
433: 2013/04/03(水)10:53 AAS
>>431
JavaScriptでCと同等の処理が書けるかって話じゃなくて、同等の速度がだせるかって話なんですけど。
434: 2013/04/03(水)10:56 AAS
emscripten はそういうのじゃないとおもうんだ
c->js はかのうかもしれない js->c は範疇外だろう?
435(2): 2013/04/03(水)10:57 AAS
逆にJavaScriptソースと同等機能を実現するC、アセンブラソースを作り出すことも可能。
JavaScript ⇒ C、アセンブラ ⇒ バイナリ としたらJavaScriptも速く出来る。
436: 2013/04/03(水)10:58 AAS
「この処理系でJSを実行したらCと同等の速度になる」って実例をバーンと出せば
終わる話なのに、できないでいろいろ理屈を言ってることは、やっぱ遅いんだな。
わかりました。
437: 2013/04/03(水)10:59 AAS
ちょっとまてよw
>>401 = >>425 かよ
真面目にレスして損したわ・・・・・・
438: 2013/04/03(水)11:00 AAS
>>435
動的型の言語は単純にCに変換できないでしょ。
439: 2013/04/03(水)11:03 AAS
>>435
>JavaScript ⇒ C
これで作られるCコードを速度まで同等に最適化するのが難しいわけよ
莫大な計算量が必要で現実的じゃない
440(2): 2013/04/03(水)11:08 AAS
C++からJavaScriptへ変換し、さらにJavaへ移植する話の続き
外部リンク:d.hatena.ne.jp
[GDC 2013]Webブラウザで「Unreal Engine 3」がヌルヌル動く!? ゲームエンジンを5日でHTML5へ移植した驚きの技術とは
外部リンク:www.4gamer.net
モジラ、ブラウザ上でゲーム機並みの3Dゲーム体験を可能にする取り組みなど発表
外部リンク:headlines.yahoo.co.jp
Mozilla、Firefox 22 にブラウザゲームを高速化する「asm.js」を搭載- インターネットコム(2013年3月28日12時00分)
ゲームは、大量のリソースと複雑なコンピューティングを要求するタスク。
このため、ゲームは、ハードウェアの特性にあわせた専用 OS 向けに、ネイティブコードで書かれるのが普通だ。
だが、Mozilla の JavaScript 高速化プロジェクトにより、高いパフォーマンスを持つブラウザゲームの実現が、現実味を帯びてきた。
米国 Mozilla は3月27日、ゲームエンジン「Unreal Engine」を開発した Epic Games と協働していることを発表した。
この共同プロジェクトは、Unreal Engine 向けのゲームを、Web ブラウザ内で動作可能にすることを目指すもの。
「Emscriptem」は C で書かれたコードを、どの Web ブラウザでも動作する JavaScript に書き換えるクロスコンパイラ。
Mozilla CTO であり、JavaScript の開発者でもある Brendan Eich 氏は InternetNews.com に対し、emscriptem を利用すれば、開発者が Web フレンドリーな新しいタイプの開発へ移行することが、より容易になると説明した。
画像リンク
外部リンク:news.infoseek.co.jp
441: 2013/04/03(水)11:09 AAS
ja.wikipedia.org/wiki/%E5%A4%89%E6%8F%9B%E8%A8%80%E8%AA%9E
asm.js もそうだけど 中間言語というかtranspilerかますと
復元できない
復元までふくめるとcoffeeみたいになるし…あれ解釈エンジンは
おなじだからこそparserラクしてる面もあるし
442(1): 2013/04/03(水)11:14 AAS
>>440
どっかの記事だと、asm.js でもネイティブコードの倍の遅さらしいけど。
(倍でもすごいけど)
443(1): 2013/04/03(水)11:16 AAS
で、俺の持ってるPCのCPUとGPUを解析して完全に最適化されたコマンドを吐いてくれるJITエンジンはいつ作ってくれるの?
444: 2013/04/03(水)11:21 AAS
>>440
asm.jsのコードはJavascriptのコードとしても実行できるけどその場合はかなり遅い
モジラのVMは、asm.jsのコードをjavascriptのコードとしてではなくて
特殊な静的言語で書かれたコードとして解釈して実行することができて、
その場合は同じようなのネイティブコードの半分ぐらいの実行速度が出る
つまりこれはJavascriptのコードを早く実行する技術とは全然違う
445: 2013/04/03(水)11:23 AAS
Mozilla、Firefox 22 にブラウザゲームを高速化する「asm.js」を搭載 - Infoseek ニュース
Mozilla のゲームプラットフォーム戦略を担当する Martin Best 氏は InternetNews.com に対し、
asm.js コードは、JavaScript 言語の中核要素を使用すると述べた。
基本的には、asm.js を意識して書かれたコードのみが高速化されることになる。
だがこの技術には後方互換性があり、Best 氏によれば、ブラウザが asm.js をサポートしていない場合であっても、
開発者は非常に効率の高いコードを書けると述べている。
外部リンク:news.infoseek.co.jp
446: 2013/04/03(水)11:29 AAS
反論がなくなったから「Javascriptは処理系しだいでCと同等の速度がでる」って話は
間違いでしたって認めたって解釈させてもらいます。
447(1): 2013/04/03(水)11:31 AAS
>>442
処理内容による。
例えば、asm.jsが円周率を1億万桁求める事をサポートし
それがC言語で書かれていてバイナリとして組み込まれていれば、
単体ネイティブバイナリと計算速度は同等だろう。
448: 2013/04/03(水)11:35 AAS
>>447
それは、速度を求められるところはCで書かないとCと同等の速度はでないってことですね。
449: 2013/04/03(水)11:38 AAS
>>443
CPU負荷や空きメモリ、処理対象データに合わせた動的最適化も追加でよろしく!
450: 2013/04/03(水)11:43 AAS
処理の重いところはグラフィックカードがやるから
ライブラリーに投げるだけでしょ?
ロジック部分の生産性が上がるなら言語部分の
速度を議論するのは不毛じゃないの?
ただ、プログラムの規模が大きくなってきたときに
Javascriptってかえって生産性低いのではないだろうかって
気がするんだけど
結局プログラムの生産性を下げるのって不注意で作り込んだ
バグをつぶすところが大きくて、Javascriptでうまく動かすのには
本来コンパイラーガやってくれる部分を
人間が細心の注意を持ってやらなきゃいけない様に見える
そう言う機能をどんどん追加していったら、
結局遅くて使いにくいC++の亜種になったりしそう
HTML5が流行りでみんながこのビッグウエーブに乗ろうと
するし、実際適用範囲が広がるのは確実だと思うけど、
出来るからって何でもそれでやろうとするのは凄く
間違った方向に進むと思うな
451: 2013/04/03(水)11:47 AAS
VB.NETが生産性最高
452: 2013/04/03(水)12:02 AAS
JavaScript処理系自体がほぼC/C++製だ。
JavaScript処理系をJavaやJavaScriptやC#や純関数型で書くのも可能だろうが。
速くしたい所を念入りに最適化するのは当然。
453(2): 2013/04/03(水)12:39 AAS
Cコンパイラが出力した機械語と速度比較するのが間違い。CコンパイラソースをJavaScriptソースに変換できれば機械語として同じ速度だ。
言語性能は同じ土台のインタプリタで比較しろ。
CINT(シーイント)
CINT はC/C++ 言語インタープリタです。
CINTを使うと、C/C++で書かれたソースコードをコンパイルせずに実行できます。
90%-95% 実行可能だそうです。
外部リンク[php]:belle.sci.fukuoka-u.ac.jp
Production Version 5.34
Availability
ROOT is available in binary and source form. The binaries are available for most supported platforms.
外部リンク:root.cern.ch
CINT・C++インタープリタ
日本語訳:柴田淑夫(Shibata Toshio)
この章ではCINT、ROOTのコマンドラインインタープリタおよびスクリプトプロセッサーについて述べる
外部リンク[pdf]:www.dw-sapporo.co.jp
454: 2013/04/03(水)12:50 AAS
>>453
>CコンパイラソースをJavaScriptソースに変換できれば機械語として同じ速度だ。
Cコンパイラソースって何だ?
Cコンパイラのソースコード?
Cコンパイルするプログラムのソースコード?
何と何が機械語として同じ速度になるの?
455: 2013/04/03(水)12:52 AAS
>>453
ネイティブのCじゃなくてインタプリタのCとJavascriptを比較しろって意味?
そうする意味がわからない。
それにJavascriptじゃCの9割以上の性能出すのムリなんじゃないの。
上下前次1-新書関写板覧索設栞歴
あと 432 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.010s