Skip to content

Commit

Permalink
Reduce memory allocation in case of initialization from big.Int (#252)
Browse files Browse the repository at this point in the history
* reduced allocs in NewFromBigInt(...) from 3 -> 2
* remaining `big.NewInt(0).Set(...)` -> `new(big.Int).Set(...)`
  • Loading branch information
lmittmann authored Oct 20, 2021
1 parent cd57bf1 commit bc96f54
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions decimal.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func NewFromInt32(value int32) Decimal {
// NewFromBigInt returns a new Decimal from a big.Int, value * 10 ^ exp
func NewFromBigInt(value *big.Int, exp int32) Decimal {
return Decimal{
value: big.NewInt(0).Set(value),
value: new(big.Int).Set(value),
exp: exp,
}
}
Expand Down Expand Up @@ -831,7 +831,7 @@ func (d Decimal) IsInteger() bool {
// When the exponent is negative we have to check every number after the decimal place
// If all of them are zeroes, we are sure that given decimal can be represented as an integer
var r big.Int
q := big.NewInt(0).Set(d.value)
q := new(big.Int).Set(d.value)
for z := abs(d.exp); z > 0; z-- {
q.QuoRem(q, tenInt, &r)
if r.Cmp(zeroInt) != 0 {
Expand Down Expand Up @@ -949,7 +949,7 @@ func (d Decimal) Exponent() int32 {
func (d Decimal) Coefficient() *big.Int {
d.ensureInitialized()
// we copy the coefficient so that mutating the result does not mutate the Decimal.
return big.NewInt(0).Set(d.value)
return new(big.Int).Set(d.value)
}

// CoefficientInt64 returns the coefficient of the decimal as int64. It is scaled by 10^Exponent()
Expand Down

0 comments on commit bc96f54

Please sign in to comment.