0


0

.netで必要なものはどれくらいですか?

タイトルのとおり; .Net BCLは、Windows自体に関する厳密な要件ではない典型的なWindowsアプリケーションに対して、どのくらいの作業(可能な場合は大まかな割合として)を実行しますか? おそらく、Winformsが行うことはすべて、MFCの類似の機能を持ち、後者は超効率的な実装です。 .Netを使用する理由は明らかにその柔軟性であり、開発者が生活を楽にするために多くのことを行います。結局のところ、Winformsは多くの基本機能のWin32のラッパーです。 これがどのようにアプリケーションのオーバーヘッドに追加されるのか、また原則としてどれだけ削減でき、アプリケーションが同じ動作を維持できるのか疑問に思っていました。

4 Answer


2



1


何が必要かについての質問はかなり哲学的です。 C ++には純粋なアセンブラと比較して独自のオーバーヘッドがあり、単一のアプリケーションを実行するために開発された(仮想の)専用プロセッサと比較して、実際には不要なものがいくつかあります。

他の観点からは、言語、フレームワークの選択によって異なる可能性がある複雑さ、拡張性、保守性を過小評価しないでください。

もう1つの懸念事項は、フレームワークによって提供される機能セットです。純粋なMFC / C ++でカスタムコントロールを作成することは、 .NET/WPF (imho).

言語/枠組みを選択する際の究極の懸念は、とにかく、アプリケーションに必要なコスト、時間、品質です。 少なくとも商用ソフトウェア開発では、他のすべては重要ではないようです。


1


技術的には、コンピューター上で最大の効率で計算を実行するためにグラフィカルユーザーディスプレイ全体に何も必要ないため、Win32とWinFormsおよびMFCは100%不要です。 ;>

MFCは「超効率的」ですか? 何もしないという意味でのみ。 MFCは、Win32上の他のアプリケーションフレームワークと比較して、Win32の薄いラッパーです。 「超効率的な」実装は、Win32 APIを直接使用してすべてを自分で行うことです。 また、IMO、Win32 APIは、MFCラッパーおよびマクロよりも使いやすく、理解しやすいです。

あなたが心配しているオーバーヘッドは不要かもしれないので、あなたの質問には本当に良い答えはありません。 最も価値のあるインフラストラクチャ機能のいくつかは、生産性と開発の容易さです。

ファイルサイズを「効率」のマークと見なす場合、.NET DLLにはシンボル情報と命令ロジックが含まれるため、。 はい、オーバーヘッドですが、実行時にDLLで使用可能なタイプを検索したり、そのサービスレベルに依存する機能を使用したりする必要がある場合、何人年節約できますか? 超効率的な手彫りのアセンブリ言語からそれを取得することはありません。 32ビットシステムと64ビットシステムの両方でネイティブコード速度を実行するDLLを構築するのはどうですか? .NETで簡単に実行でき、Cまたはアセンブラーでは非常に困難です。

効率の定義は、何を最も重視するかに完全に依存します。 .NETでの開発は、アセンブラよりも.NETで同じ時間内により多くの有用な作業を行うことができるため、ハンドコーディングアセンブラよりも効率的に時間を使用します。 アセンブラーとCは、ディスクスペースと生のシングルスレッドCPUパフォーマンスの点ではより効率的ですが、ディスクスペースは安価であり、シングルスレッドはCPUをフルに活用できません。

ソフトウェア開発の基本的なルール:「高速、安価、簡単:2つを選択してください。」


0