これはあなたの例に対する直接の回答ではなく、あなたのコメントへのアドレスであり、間違った視点を示しています IMHO
私はその特定の問題について疑問に思っていました.仮想メソッドのパフォーマンスオーバーヘッドを回避するより効率的な方法があるかどうかに主に興味があります.
ここで理解しておくべきことがあります。すべてにトレードオフがあります。設計パターンと OO には、私たちが愛するようになったすべての既知の利点がありますが、クラスが多すぎる、メモリのオーバーヘッド、多くのメソッド呼び出しによるパフォーマンスのオーバーヘッドなどの欠点もあります。
一方、古い「手続き型」の方法には、客観的であるという利点もありました。コードは「シンプル」で (システムの設計方法を考える必要はなく、すべてをメインに配置するだけです)、多くの面でオーバーヘッドが少なくなりました (必要なクラスが少なくなり、オブジェクトがコンパクトになるため、メモリのオーバーヘッドが少なくなり、仮想テーブルが不要になります)。 etc-メソッド呼び出しが少ないため、おそらくパフォーマンスが向上し、動的バインディングのパフォーマンスオーバーヘッドはありません-現在のオーバーヘッドが何であれ...-)。
しかし、それは特定の問題インスタンスのトレードオフが何であるかではなく、ソフトウェアを構築するための適切な方法が何であるかを経験が示しています。モジュール化されており、個別のテストを支援するコードの再利用(品質保証)、読み取り可能、保守可能、柔軟に拡張できることは、ソフトウェア開発の主な原動力となるべき、よく理解されている属性です。
したがって、C/C++の本当に優れたプログラマーがあなたが言うように「古い方法」を実行できる場合がありますが、この特定のプログラムで発生するパフォーマンス上の利点は、誰も維持または管理できないという事実に値します。その後も維持?
別の同様の例を挙げると、同じように尋ねることができますか?
Web 開発で多層アーキテクチャを使用する理由 すべてを 1 つのサーバーに配置するだけで、バックエンドと UI のデータのすべてのレイヤーをクエリする際の待機時間や、リモート データベースのクエリのネットワーク待機時間などがないため、非常に高速になります。
確かに、あなたにはポイントがあります。しかし、自問してみてください。これは、負荷の増加に応じて拡張できますか? 答えはノーだ。スケーラビリティはあなたにとって重要ですか、それとも「すべてを 1 つのサーバーに入れる」という考えを維持したいですか? あなたの収入が e-site から来ている場合、最初の 100 件を非常に迅速に提供したからといって、より多くの顧客にサービスを提供できないという事実は、クライアントを満足させることにはなりません.とにかく、これは私の意見です.