2011-07-09 1 views
1

私はOOプログラミングが潜在アプリケーションを設計する人にとって問題を引き起こすかどうか疑問に思っただけですか?レイテンシコードを書く人はOOプログラミングを使いますか?オブジェクト指向プログラミングの拡張性がコードのスピードと釣り合っているかどうかを知ることは興味深いでしょうか?レイテンシアプリケーションでオブジェクト指向プログラミングが競合しますか?

たとえば、私はC++の仮想関数がレイテンシプログラマーにとって大きな「いいえ」ではないことを読んでいますか?

答えて

1

メモリの局所性やキャッシュの一貫性、アルゴリズム設計、言語ベース(インタープリタ、VM、ネイティブ)などの他のコストと比べると、いくつかの仮想関数は非常に簡単です。カプセル化のようなオブジェクト指向の原則は完全にコンパイル時の操作であり、抽象化は汎用プログラミングを使用して無料で達成することができます。場合によっては、汎用プログラミングをしていない言語ではやむを得ない場合や、非常にタイトなループで呼び出す場合には避けられない場合もありますが、その場合は、安い代替品。

C++でのパフォーマンスに関心のあるプログラマーが仮想関数を使用していないプログラマーが間違っていたと誰でも言いました。

2

大多数のコードのはCPUにバインドされていません。 CPUは馬鹿馬鹿しく高速で、ほとんどの時間をIOが受動的に追いつくのに費やしています。ですから、ほとんどの場合、私は「いいえ」と言います。

メモリ内のすべてを行い、完璧なループ構造などを持つアプリケーションを持つ可能性があります。この神話的な獣では、仮想関数を捨てることでパフォーマンスを少し向上させることができます。しかしそれはかなり極端なシナリオです。

基本的にはコンテキストによって異なります。一般に、これは単に問題ではありません。 java/c#は、デスクトップ/サーバーのバージョンではかなり最適化されており、大変遅くはありません。

関連する問題