【发布时间】:2009-05-06 22:34:06
【问题描述】:
我正在尝试查找有关 glibc 的信息以及它在多大程度上使用 SSE 功能。
如果经过优化,我可以直接使用它吗?
假设我使用的是较大的 Linux 发行版之一,我假设它的 glibc 被编译为尽可能通用并尽可能便携,因此没有优化?
我对 memcpy 和 memcmp 函数以及如何尽快获得这些函数特别感兴趣。
【问题讨论】:
标签: c performance sse
我正在尝试查找有关 glibc 的信息以及它在多大程度上使用 SSE 功能。
如果经过优化,我可以直接使用它吗?
假设我使用的是较大的 Linux 发行版之一,我假设它的 glibc 被编译为尽可能通用并尽可能便携,因此没有优化?
我对 memcpy 和 memcmp 函数以及如何尽快获得这些函数特别感兴趣。
【问题讨论】:
标签: c performance sse
glibc 2.8 根本不将 SSE 用于 memcpy 或 memcmp(在 x86 或 x86_64 中) - 它使用一些手写程序集,避免了该系列的所有 CPU 不支持的任何内容。在 glibc 2.10 中,将支持一种新的重定位类型,STT_GNU_IFUNC,这将使基于 CPU 支持的更好的优化成为可能。
【讨论】:
如果您使用最高优化设置进行编译,则 memcpy 和 memcmp 可能会被编译器替换为内部函数,并且根本不会调用 glibc。然后 mcpu 和 march 编译器选项将选择最快的代码。
【讨论】: