C++ではc配列の方がstd::arrayよりも高速だといつも思っていましたが、アクセス速度に基づいてベンチマークを行ったところ、std::arrayの方が高速であるようです。何故ですか?
2259 次
1 に答える
5
このタイプの質問は、常にコンパイラーの最適化、プロセッサー・アーキテクチャー、および他の多くの要因と密接に関連しているため、答えは「依存する」、またはおそらく「誰も知らない」と言った方が適切です。
また、あるシステムでより良いものを見つけたとしても、別の状況 (別のコンパイラ、別のプロセッサ、別のオペレーティング システムなど) でのほうが良いとは限らないことも指摘しておきたいと思います。全体的なソリューションが非常に似ている場合 (この場合はそうだと思います)、コード生成のわずかな違い、またはプロセッサ アーキテクチャの違いの結果が、どちらの方向にも結果を変える可能性があります。または、たとえば、「余分な作業」を回避するために、メモリ割り当てがキャッシュラインまたは仮想メモリページとどの程度一致しているかなどです。
常にパフォーマンスについて議論するときは、決して推測したり、インターネットで質問したりしないでください。すべてのオプションを測定し、すべてのオプションを再度測定し (他のプラットフォーム、異なるコンパイラ オプションなどで)、どちらが優れているかを判断します [コードのパフォーマンスが最初から重要であると仮定して]。
于 2013-01-29T13:46:17.107 に答える