任天堂「今後C++は捨てJavaScriptで開発していく」 (887レス)
上下前次1-新
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
省8
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割以上の性能出すのムリなんじゃないの。
456: 2013/04/03(水)12:54 AAS
Cの生産性の悪さとインタープリタの性能の低さを合わせた最強のツールか
457: 2013/04/03(水)12:55 AAS
無駄に改行入れる奴って例外なくバカだね
458: 2013/04/03(水)12:58 AAS
もはや自分でも何言ってんのか分かってなさそうだ
最近のコンパイル言語はコンパイルからJITコンパイルに移行しつつ有って最近のスクリプト言語もインタプリトからJITコンパイルに移行しつつ有るというのに、コンパイル言語の不完全なインタプリトとスクリプト言語の最新JITコンパイルを比較とか何がしたいんだ。
459(1): 2013/04/03(水)13:00 AAS
機械語、CPUが直に理解できるワードはC言語とは別もの。
機械語で比較するならば、Cコンパイラと同じ出力を作れれば同速度であるといえる。
Cコンパイラのソースコードを移植できる言語であれば、C言語と同速度。
460: 2013/04/03(水)13:07 AAS
>>459
何のプログラムコードで書いた何をするプログラムが同速度になるの?
461(1): 2013/04/03(水)13:12 AAS
459だとC言語ソースをJavaScriptでコンパイルしたものが
C製Cコンパイラと同速度という意味だが。
JavaScriptソースとC言語ソースに互いに変換可能で無駄がないとすれば
JavaScriptソースもJavaScript製コンパイラでC言語並の速度が出るということ。
462(2): 2013/04/03(水)13:15 AAS
>>461
>JavaScriptソースとC言語ソースに互いに変換可能で無駄がない
ここが間違ってる
JavascriptソースからC言語ソースへの変換は、Javascriptソースのほうが情報量が少ないから、
同等なものに変換するには事実上不可能なほどの計算量が必要になる
463: 2013/04/03(水)13:18 AAS
>>462なので、
JavaScriptソースをJavaScript製コンパイラでC言語並の速度を出すというのは不可能
464(1): 2013/04/03(水)13:28 AAS
JSって変数が全部バリアント型なのにC並の速度が出る。。。わけないだろバカ
465: 2013/04/03(水)13:32 AAS
動的型付言語とは何なのか
CコンパイラがCソースコードをどのようなマシン語に変換するのか
この辺を勉強してみれば>>462が如何に難しいか理解できる
466: 2013/04/03(水)13:38 AAS
なんか致命的な勘違いか致命的な極論が混ざってるようにしか見えんわ
ゲスパーしとくと、JSにコンパイラ移植してもコンパイルしたコードはJSの実行環境では動かないから意味は無いしコンパイル元のコードがJSじゃないから本末転倒だぞ
>>464
そこを全部型付きにして高速化を図ろうってのが最近のトレンドだが、もはや人が書くような言語じゃねと言わんばかりに別言語の中間コードから型ヒント付きJSを生成する技術が登場する始末
JSを元にした中途半端な謎中間言語とか誰得状態だし、なんてーかそこまでやるならMSILでもLLVMでもいいからそのへんのJITレイヤをそのまんまJSに組み込んで中間コードからFunctionオブジェクト生成する機能でも追加しろよって感じだ
467(3): 2013/04/03(水)13:47 AAS
C言語が機種依存して最適化してる。C言語なみの速度がJavaScriptで実現可能かということは原理的には可能だろ。
C++のテンプレート使うと、必要な型のすべてのバイナリを生成し、バイナリの中身は型付き変数として動作する。
JavaScriptコンパイラを作り最適化したらいいだけ。
468(1): 2013/04/03(水)13:53 AAS
>>467
原理的に可能って、JSでコンパイル時点ですべての型を予測して
あらかじめ生成するなんてムリだろ。
469(1): 2013/04/03(水)13:55 AAS
>>467
テンプレートの場合に型が変化するのはそのテンプレート引数の組み合わせだけだけど、
Javascriptの関数の場合に型が変化する組み合わせはそれこそ莫大な数になる可能性が考えられるわけよw
しかも実行と同等なことをしてみないと必要な組み合わせが判明しない
なので無理
470: 2013/04/03(水)13:56 AAS
C言語自体は機種依存してないよな
言語とライブラリを分離してるだけで
#ifdef使えば
UNIXとWindowsですらソースコードレベルのポータビリティが有る訳で
API部分を抽象化しても結局うまくいかないのはJavaが証明したし
JavaScriptもそれを繰り返すことになるだろう
471(3): 2013/04/03(水)15:51 AAS
>>468>>469
あまりに実行中に新型の型を生成するようではエラー出してコンパイルを停止させる。
どこで新型が生成されるか事前に判別できるから、無限ならず有限で済むケースでのみコンパイルを成功させる。
472: 2013/04/03(水)16:46 AAS
>>471
ちょっと複雑なコードを書いたらすぐエラーになるか、コンパイルが終わらなくなりそう。
473: 2013/04/03(水)17:06 AAS
>>471
ごまかすな
お前が言ってたのはJavascriptのコードをCのコードと同等な速度に変換できるってことだろ?
変換可能な部分のみ変換するのでは
JavascriptのコードをCのコードと同等な速度に変換できるとは言えない
その程度だったら事前に変換してコンパイルじゃなくて、JITコンパイルで十分なのよ
474: 2013/04/03(水)17:10 AAS
GCありきで書かれたクソコードを静的解析してスタックに割り付ける作業に戻れ
475(2): 2013/04/03(水)19:12 AAS
JavaScriptでC言語に並べるのは事実。
CソースをJavaScriptソース内にStringとしてコピペして
JavaScript製Cコンパイラに通したら、C製Cコンパイラと同じ実行ファルを生成でき
速度はC製Cコンパイラと一緒。
477: 2013/04/03(水)19:35 AAS
>>475
つまりCで書かないとはやくならないのか。
478(1): 2013/04/03(水)20:04 AAS
最適化トランスコーダを書いてさらにCコンパイラで最適化だ!!!
聞きかじりだが、PyPyみたいになるかもしれんぞ。
479(1): 2013/04/03(水)20:05 AAS
っていうか、LLVMのフロントエンド書くんだ!!
480: 2013/04/03(水)21:40 AAS
LLVMはバックのほうが windows でまともにうごくかな!
481: 2013/04/03(水)21:57 AAS
twitter.com/shelarcy/status/319102598693138433
GHCのSIMD命令対応
がんばるHaskeller...
482: 2013/04/03(水)22:13 AAS
まあ、関数型は並列性抽出しやすいからな。
483: 2013/04/04(木)03:26 AAS
>>467
全てではなく呼び出し関係を追いかけて出現した型だけだし、一度確定した型はC++では変化しない
JavaScriptの場合型が変化するどころか型の定義そのものが後から変化してしまうから手に負えない
>>471
「どこで新型が生成されるか事前に判別でき」「ない」
君の大好きチューリングマシンの停止性問題と同じ理屈で、ある条件である部分(ある内容の型生成)が実行されるかは判別できない
結果、実行中に実際生成された型でその都度ネイティブコードを生成するJIT実行か、連想配列を使ったインタプリタに毛が生えたような実装になる
省3
484: 2013/04/04(木)03:42 AAS
>>478-479
素のJavaScriptで型特定は無理ゲーだし諦めて、もうJScript.net(≠JScript)でよくね?
型ヒントとか色々付けないとコンパイル通らないけど、一応IL吐けるからC++/CLRといい勝負できるかもしれん
もっとゴリゴリやりたい部分はMSILからFunction生成で誤魔化すw
485: 2013/04/04(木)21:25 AAS
なんでMS前提なんだよ
486(1): 2013/04/05(金)10:08 AAS
JavaScriptと実用レベルで互換が有ってネイティブコードまでまともに変換できる製品がJScript.netくらいしか思いつかなかったんだ
吐けるバイナリはMSILだけどMSILのJITコンパイルは起動時/インストール時にほとんど終わるからJSのコンパイル基盤って意味では一番まともかと
JScript.netが吐き出すILやそのアセンブリを見たこと無いからなんとも言えんけど、
ILの品質次第ではJavaScriptで書いたコードが等価なC/C++で書いたコードとタメ張るかもしれん
487: 2013/04/05(金)23:13 AAS
>>486
たぶんないなw
488(1): 2013/04/05(金)23:51 AAS
まぁ最近の家庭用据置ならちょっとしたアプリやホビープログラムならスクリプトでお手軽に
ってのはありじゃね
商用のフルパッケージでそんな事してたらアホだけど
489: 2013/04/06(土)04:44 AAS
いいからファミリーべーしっくやってろw
490: 2013/04/06(土)09:12 AAS
>>488
FPSのなかのLuaさん「・・・」
491: 2013/04/06(土)10:25 AAS
いまや商用のフルパッケージなゲームでこそ、
DSLとしてスクリプト言語的なものを使うのは普通だね
492: 2013/04/06(土)10:35 AAS
大きなゲームでスクリプト使うのは
・リロードで差し替えられることによるトライ&エラーしやすさ
・ビルド環境不要
という面が大きい。
Lua好きなんだけど、
PCアプリではBlender-Pythonみたいなあまり有名なのが無いのはなぜなんだろう。
493: 2013/04/06(土)12:51 AAS
Moai SDKでググれ
494: 2013/04/06(土)21:04 AAS
AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
2chスレ:pcnews
世界中でダントツの人気!各BASICの特徴
・ AGK App Game Kit(外部リンク:www.appgamekit.com)
海外で主流のマルチプラットフォームの開発環境。
C言語風味の記述が特徴で、中身はDarkBASIC。
Ver1.088で3Dインターフェイス対応。
省12
495: 2013/04/07(日)09:54 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 JavaScript DarkBASIC AGK 99BASIC
---------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 7.772 20.853 65.423 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 9.928 26.638 83.575 1957.0
省10
496: 2013/04/07(日)10:36 AAS
そういうアプリ内の処理時間の割合が20%未満のグループに入るものの比較をしてもほとんど意味ないよ。
80%に含まれるものの比較をしなきゃ。
497: 2013/04/07(日)10:40 AAS
それと、例えば1秒とかの単位時間あたりの処理回数も考慮しないとね。
1秒あたりたかだか100回程度しか行わないのに、10億回の処理時間を比べても意味ないし。
498(1): 2013/04/07(日)10:47 AAS
ループ速度の測り方は難しいけど
ループが一番処理として多いのは間違いないだろ
批判が適当すぎ
499: 2013/04/07(日)10:57 AAS
そもそもBASICと比較してどうすんだ
500: 2013/04/07(日)11:07 AAS
つまんね
501: 2013/04/07(日)11:13 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ
(表2)ランキング表
開発環境 タイム[sec] MASM32を1とする相対倍率
------------------------------------------------------------------------------------
PC(CeleronD2.66GHz). MASM32. 0.7828 1.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz). JavaScript 7.772 9.928
省13
502: 2013/04/07(日)11:26 AAS
「開発環境:JavaScipt」から滲み出る頭の悪さ
503: 2013/04/07(日)11:27 AAS
>>498
重要なのは、ループ内の処理速度であってループそのものの処理速度ではない。
まあループそのものの処理速度が致命的に遅いのなら問題だが。1回1msかかるとか。
504(1): 2013/04/07(日)11:44 AAS
ループそのものから重ければ推して知るべし
恥かいちゃったね
505: 2013/04/07(日)12:10 AAS
>>504
推して知れないからいろんなahootoutのページでは様々な切り口でベンチしてるんだよ。
それと、今回任天堂がやろうとしているドメインの機能やAPIを考慮したベンチじゃないと意味ないね。
506: 2013/04/07(日)12:12 AAS
まあただのループ比較したって意味ないよね
LINPACKみたいに演算やデータアクセスのあるのを比較すればいいのに
507(1): 2013/04/07(日)12:15 AAS
結構バカが吊れたなw
508: 2013/04/07(日)12:26 AAS
今どき釣り宣言とか・・・
509: 2013/04/07(日)12:31 AAS
>>507
顔真っ青だぞお前
510: 2013/04/07(日)12:43 AAS
本日のロバ=任天堂w
511: 2013/04/07(日)12:47 AAS
わからないとわめくバカw
512: 2013/04/07(日)12:52 AAS
つか、masmの10倍くらいしか時間がかからないんだったら問題ないよね
513: 2013/04/07(日)13:03 AAS
ねんまつ
514(1): 2013/04/07(日)13:26 AAS
インクリメントと条件分岐だけで10倍って
普通の処理なら10倍どころじゃすまないってことだぞ
515(1): 2013/04/07(日)13:41 AAS
FOR-NEXT10億回ループはJITコンパイラ実装のJavascriptにかなり有利な条件だよね
516: 2013/04/07(日)16:35 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.02 page 1/2
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 Visual C++ JavaScript DarkBASIC AGK Basic4GL 99BASIC
-------------------------------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 2.821 7.772 20.853 65.423 285.703 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 3.604 9.928 26.638 83.575 364.975 1957.0
省10
517(1): 2013/04/07(日)16:35 AAS
AA省
518(1): 2013/04/07(日)16:37 AAS
まだやってんのかよもういいから
519: 2013/04/07(日)16:58 AAS
>>517-518
この先も続けるつもりならコテつけてやってくれんかね
520: 2013/04/07(日)17:11 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.03 page 1/2
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 Visual Basic Visual C++ JavaScript DarkBASIC AGK Basic4GL 99BASIC
----------------------------------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 2.445 2.821 7.772 20.853 65.423 285.703 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 3.123 3.604 9.928 26.638 83.575 364.975 1957.0
省10
521: 2013/04/07(日)17:12 AAS
AA省
522(1): 2013/04/07(日)17:22 AAS
チューリング完全がなんとか言ってた頭のおかしい人か
しょうがねえからワードであぼーんすっかな
523: 2013/04/07(日)17:40 AAS
AA省
524: 2013/04/07(日)17:40 AAS
AA省
525: ─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日)17:50 AAS
んじゃな♪(ペロリ♪”
526: 2013/04/07(日)18:22 AAS
>>514
いや、傾向としては、そういう速い処理は差がつきやすいけど、IOが
絡んだ処理のように明らかに遅い処理はほとんど差がないってのが
一般的な傾向じゃね?
527: 2013/04/07(日)20:57 AAS
どんだけレベル低いんだよ・・・
528: 2013/04/08(月)02:47 AAS
>>17
いわっちだったらあり得る
529: 2013/04/08(月)05:12 AAS
そらバルーンファイトはそうだろうけどよ
530: 2013/04/08(月)06:35 AAS
>>515
っていうか最適化によってはループせず変数に最終値が直接代入されて終わるレベルまで展開されかねない。
JITだと一巡回しきるまでループ結果を展開できないけど、事前コンパイルだとコンパイル時にループ回して結果確定できるからコンパイラ使うほうが強くね?
・・・まぁVCとかが遅く出てるようだから最適化を切った無意味な比較っぽいが。
>>522
実際試してみたら(どのJSエンジンかは知らんけど)JavaScriptの遅さに仰天してアセンブラ信者に転向したんだろうな。
takやtaraiを覚えたら関数型言語に転向しそうだ。
531: 2013/04/08(月)14:40 AAS
JSは変数スコープがキモイ
532(1): 2013/04/08(月)15:02 AAS
JSの変数スコープが理解できないやつはわりと頭悪い
533: 2013/04/08(月)20:40 AAS
typoしても黙ってるとかタチ悪すぎ
VBAですらOption Explicit必須だというのに
上下前次1-新書関写板覧索設栞歴
あと 354 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル アボンOFF
ぬこの手 ぬこTOP 0.029s