You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将PageImpl<T>.getTotalPages()改为使用整数运算而非浮点运算?

关于PageImpl.getTotalPages()改用整数运算的优化方案

原实现代码

@Override
public int getTotalPages() {
    return getSize() == 0 ? 1 : (int) Math.ceil((double) total / (double) getSize());
}

问题分析与优化方案

完全可以改用整数运算替代浮点运算,既规避浮点精度的潜在风险,又能显著提升运算效率。整数运算的实现逻辑如下:

@Override
public int getTotalPages() {
    int size = getSize();
    if (size == 0) {
        return 1;
    }
    return total % size == 0 ? total / size : total / size + 1;
}

核心逻辑说明

  • 当每页大小size为0时,保留原逻辑返回1
  • 若总记录数total能被size整除,直接返回total / size
  • 若无法整除,将商加1即可实现和Math.ceil浮点运算完全一致的向上取整效果

可读性与性能的平衡

原浮点实现虽看似直观,但整数运算的逻辑同样清晰,仅需简单注释就能维持极低的维护成本。而性能层面的提升值得重视:

  • 整数运算无需类型转换,CPU执行效率更高,测试中两倍的性能提升符合整数运算的特性
  • 考虑到Spring Boot的广泛普及,哪怕是微小的CPU使用率下降,在大规模服务器集群中累积的节能效果也不容忽视,这一考量非常务实

内容的提问来源于stack exchange,提问作者Matthew V Carey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:20:58