From a2a95d4fc1eb5a9e264d9fbc17cfcdc99463f9f1 Mon Sep 17 00:00:00 2001 From: lmittmann Date: Mon, 18 Oct 2021 16:38:02 +0200 Subject: [PATCH 1/2] minor performance improvment - reduced allocs in NewFromBigInt(...) from 3 -> 2 --- decimal.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/decimal.go b/decimal.go index 7686af12..61d354ea 100644 --- a/decimal.go +++ b/decimal.go @@ -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, } } From a271a29269e1e3424ff4e2424c86bbbd6568e413 Mon Sep 17 00:00:00 2001 From: lmittmann Date: Mon, 18 Oct 2021 16:40:18 +0200 Subject: [PATCH 2/2] remaining `big.NewInt(0).Set(...)` -> `new(big.Int).Set(...)` --- decimal.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/decimal.go b/decimal.go index 61d354ea..78e26618 100644 --- a/decimal.go +++ b/decimal.go @@ -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 { @@ -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()