glibc に関する情報と、それが SSE 機能をどの程度使用しているかを調べようとしています。
最適化されている場合、そのまま使用できますか?
大規模な Linux ディストリビューションの 1 つを使用しているとします。その glibc は、可能な限り汎用的で、可能な限り移植可能になるようにコンパイルされているため、最適化されていないと思いますか?
関数 memcpy と memcmp と、これらの関数をできるだけ速く取得する方法に特に興味があります。
glibc に関する情報と、それが SSE 機能をどの程度使用しているかを調べようとしています。
最適化されている場合、そのまま使用できますか?
大規模な Linux ディストリビューションの 1 つを使用しているとします。その glibc は、可能な限り汎用的で、可能な限り移植可能になるようにコンパイルされているため、最適化されていないと思いますか?
関数 memcpy と memcmp と、これらの関数をできるだけ速く取得する方法に特に興味があります。
glibc 2.8 は memcpy または memcmp に SSE をまったく使用しません (x86 または x86_64) - ファミリのすべての CPU でサポートされていないものを回避する手書きのアセンブリを使用します。glibc 2.10 では、新しいタイプの再配置であるSTT_GNU_IFUNCがサポートされます。これにより、CPU サポートに基づくより良い最適化が可能になります。
最高の最適化設定でコンパイルすると、コンパイラによって memcpy と memcmp が組み込み関数に置き換えられ、glibc がまったく呼び出されない場合があります。次に、mcpuおよびmarchコンパイラ オプションにより、最速のコードが選択されます。