[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart15 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
301
(1): 2024/12/06(金)13:42 ID:m+qwX7OY(1/6) AAS
C#はビルドするとCILっていう共通中間言語を生成する
これは人間にも読みやすいアセンブラっぽい物で実行時にVES(仮想実行システム)にCILを渡してJIT(実行時コンパイル)で必要な処理分がその都度機械語にコンパイルされ実行される
つまり毎回コンパイルは発生するけど動き始めれば機械語で動いてる

当然この方式に利点は合って同じソースでプラットフォームやマシン構成に合わせた最適な処理を生成してくれるので何も考えずに作ったC++より高速に動く事もある
また機械語に親和性の高い中間言語になっているので通常のコンパイルに比べたら格段に速く生成できる

明確にC#が遅い点は有って例えばメモリの確保宣言、これは仕方ない点もあってバグの温床になりやすいメモリの開放を自動でやってくれるガベージコレクションがある事
C#でも遅いけどその4~5倍ぐらいコストがかかる
省3
302: 2024/12/06(金)13:45 ID:m+qwX7OY(2/6) AAS
C#の特徴としてインタプリタ方式の実行も可能
デバッグの際にプログラムを止めて1行ずつ実行してってお世話になった方も多いはず
※尤も今では開発環境が凄くてC++でも同じ事が出来るのであまり気にする人も居ないかも...

たまにVB.NETはC#より遅いとか劣ってるとか聞きますがVB.NETもCIL作って同じVESで動いてるので実際は大差なかったりします
同じコードなのに遅いって言ってる人は変数型が全部Objectだったり多少手間を省いても動いてしまうVB.NETのおおらかさに甘えた結果が殆どだったり
303: 2024/12/06(金)13:46 ID:m+qwX7OY(3/6) AAS
C#にもAOT(事前コンパイラ)ってのがあってあらかじめ機械語にコンパイルしておくことは出来ますがVESの環境最適化の良さを無くす事になるのであまりお勧めしません
自分のPCでしか動かさないとか環境が固定されてるとかならやる価値はありますが
304: 2024/12/06(金)13:50 ID:m+qwX7OY(4/6) AAS
あとUnityにはIL2CPPっていうC#のコードをC++のコードに変換してコンパイルしてくれる機能があるのでこれを使ってみるのも
305: 2024/12/06(金)14:01 ID:m+qwX7OY(5/6) AAS
CILは人間にも読めるレベルなのでデコンパイルしてソースコードに戻すことが容易なのでどうしても知られたくない部分がある場合は難読化、暗号化、主要部分の外部DLL化等工夫する必要がある
306: 2024/12/06(金)14:20 ID:m+qwX7OY(6/6) AAS
>>301
× C#でも遅いけど
〇 C++でも遅いけど
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.036s