百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
L

libdivide

> 编程语言
开源

libdivide 的官方 git 仓库:优化的整数除法

1.3K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

libdivide 的官方 git 仓库:优化的整数除法

libdivide libdivide.h 是一个仅包含头文件的 C/C++ 库,用于优化整数除法。整数除法是大多数 CPU 上最慢的指令之一,例如,在当前的 x64 CPU 上,64 位整数除法的延迟可达 90 个时钟周期,而乘法的延迟仅为 3 个时钟周期。libdivide 允许您用一系列移位、加法和乘法指令来代替昂贵的整数除法指令,从而更快地计算整数除法。使用 libdivide 时,在当前 CPU 上,64 位整数除法的速度可提高 10 倍,32 位整数除法的速度可提高 5 倍。libdivide 还支持 SSE2、AVX2、AVX512、NEON 和 SVE 向量除法,这些功能可提供更大的速度提升。您可以使用基准程序测试在您的 CPU 上可以实现多少速度提升。libdivide 与 8 位微控制器兼容,例如 AVR 系列:CI 版本包含一个 AtMega2560 目标。由于低端硬件通常不包含硬件除法器,因此 libdivide 特别有用。除了运行时 C 和 C++ API,还包含一组预定义的宏和模板,用于加速对 16 位常数的除法:在 8 位系统上,avr-gcc 不会对 16 位常数的除法进行优化。有关 libdivide 的更多信息,请参阅 https://libdivide.com。C++ 示例 第一段代码使用整数除法对向量中的所有整数进行除法。由于整数除法比当前 CPU 上的任何其他整数算术运算慢至少一个数量级,因此速度很慢。C++ void divide(std::vector& vect, int64t divisor) { // 速度慢,使用整数除法 for (auto& n : vect) n /= divisor; } 第二段代码运行速度更快,它使用 libdivide 来使用移位、加法和乘法指令计算整数除法,从而避免了缓慢的整数除法操作。C++ #include "libdivide.h" void divide(std::vector& vect, int64t divisor) { libdivide::divider fastd(divisor); // 速度快,使用 libdivide 来计算除法 for (auto& n : vect) n /= fastd; } 通常情况下,如果以下情况成立,libdivide 将带来显著的速度提升: 除数仅在运行时才知道 除数可重用…

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

核心特点

  • •The divisor is only known at runtime
  • •The divisor is reused multiple times e.g. in a loop
  • •Unsigned branchfree divider cannot be ``1``
  • •Faster for unsigned types than for signed types
  • •``LIBDIVIDE_SSE2``
  • •``LIBDIVIDE_AVX2``
  • •``LIBDIVIDE_AVX512``
  • •``LIBDIVIDE_NEON``
  • •``LIBDIVIDE_SVE``
  • •``LIBDIVIDE_SVE2``

> 标签

C++

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言