-2

memcpygcc コンパイラを使用した x86_64 と Linux での速度。せいぜい同等Time to transfer 1 long * Number of longsかそれ以上か。

4

2 に答える 2

2

これは、関数の CRT 実装に完全に依存しています。コンパイラのソース コードを確認して、100% 確信できるはずです。

通常、マシンにとって効率的なブロックをコピーし、開始/終了アドレスの配置に応じて適切なエッジ ケース処理を実行するように最適化されています。長さとアラインメントを処理する必要があることを考えると、純粋なlongコピーよりも高速になる可能性は低いですが (そのステートメントはプラットフォームによって異なります)、速度低下が実際のアプリケーションに顕著な違いをもたらす可能性も低いです。

于 2012-04-23T11:20:57.547 に答える
2

私の知る限り、x86 (32 ビットおよび 64 ビット) の可能な限り最速のコピーは、1 つの XMM レジスタのサイズである 16 バイト幅のデータ転送を使用します。これは、Intel の最適化マニュアルで推奨されている方法です。ただし、確実にするには、システム ライブラリを逆アセンブルして、使用するメソッドを確認する必要があります。

于 2012-04-23T11:54:38.523 に答える