# 性能注意事项

URL: https://caijiao.org/decimaljs/08-advanced/04-performance
Source: docs/decimaljs/08-advanced/04-performance.md
Description: 介绍使用 decimal.js 进行高精度计算时的性能影响及优化建议，帮助开发者在保证精度的同时提升效率。

decimal.js 虽然提供了高精度计算能力，但由于其内部实现基于字符串和大数运算，相较于原生 Number 类型，性能开销较大。

## 性能影响因素

- **高精度配置**  
  精度越高，计算时处理的数字位数越多，耗时越长。

- **大量运算**  
  在循环或大批量数据处理中，频繁创建和操作 Decimal 实例会增加内存和 CPU 负担。

- **链式调用**  
  每次调用返回新实例，链条过长时会产生较多临时对象。

## 优化建议

- **合理设置精度**  
  根据业务需求调整 `Decimal.set({ precision: X })`，避免无谓的超高精度。

- **减少不必要的实例创建**  
  尽量复用 Decimal 实例，避免重复转换。

- **批量处理时分批计算**  
  避免一次性大量复杂链式操作。

- **避免频繁转换**  
  在计算完成前尽量保持 Decimal 类型，减少与原生数值的转换。

- **按需舍入**  
  只在展示或关键步骤做舍入，减少中间过程的舍入次数。

## 示例

```js
import Decimal from 'decimal.js';

Decimal.set({ precision: 20 }); // 合理精度配置

function batchSum(arr) {
  let total = new Decimal(0);
  for (const val of arr) {
    total = total.plus(val);
  }
  return total;
}
````

---

理解性能特点和优化策略，可以让你在保证计算精度的同时，最大化提升 decimal.js 的运行效率。
