永遠に続く戦いです。C 対 C++ 対 C# 対その他。C# では、安全でないという概念は、"危険な" 操作のロックを解除することです。つまり、C および C++ でできるように、ポインタの使用、および void ポインタなどへのキャストが可能です。非常に危険で、非常に強力です!しかし、C# が基づいていたものを打ち負かします。
最近では、特に .NET のリリース以降、Microsoft がパフォーマンスの方向に進歩を遂げていることがわかります。.NET の次のバージョンでは、C++ と同様にインライン メソッドが実際にサポートされる予定です。これにより、非常に特定の状況でのパフォーマンスが向上します。それが ac# の機能ではなく、コンパイラが拾う厄介な属性になるのは嫌ですが、すべてを手に入れることはできません。
個人的には、C# とマネージ DirectX を使用してゲームを作成しています (なぜ XNA を使用しないのですか?? この投稿の範囲を超えています)。私はグラフィカルな状況で安全でないコードを使用しています。これは、他の人が言ったことの方向にうなずきます。
GDI++ ではピクセル アクセスがとてつもなく遅いため、代替手段を探すようになりました。しかし、全体として、c# コンパイラは非常に優れており、コード比較 (記事を見つけることができます) では、パフォーマンスが c++ に非常に匹敵することがわかります。コードを書くためのより良い方法がないと言っているわけではありません。
結局のところ、個人的には、C、C++、および C# の実行速度はほぼ同じであると考えています。ただ、基盤となるハードウェアと非常に緊密に連携したり、それらのピクセルに非常に近い部分で作業したい場合など、いくつかのつらい状況では、C/C++ クラウドに顕著な利点があることがわかります。
しかし、ビジネスや最近のほとんどの場合、C# は真の競争相手であり、「安全な」環境にとどまることは間違いなくボーナスです。
外に出ると、ほとんどのことは安全でないコードで行うことができます。しかし、それは価値がありましたか?おそらくそうではありません。個人的には、C++ のタイム クリティカルなコードや、C# のすべてのオブジェクト指向の安全なコードに沿って、もっと考えるべきだったのではないかと思います。でも、思った以上にパフォーマンスがいい!
行う相互運用呼び出しの量に注意している限り、両方の長所を活かすことができます。私は個人的にそれを避けてきましたが、どのくらいの費用がかかるのかわかりません。
したがって、私が試したことはありませんが、実際に C++ .NET を使用してライブラリを開発する際の冒険を聞きたいと思います.C# がこれらの特別なグラフィカルな状況に対して安全ではないよりも高速でしょうか? それは、ネイティブの C++ コンパイル済みコードと比べてどうですか? では質問です!
うーん..