swift-numerics icon indicating copy to clipboard operation
swift-numerics copied to clipboard

[BigInt tests] ✅ String tests

Open LiarPrincess opened this issue 2 years ago • 1 comments
trafficstars

Please read the #242 Using tests from “Violet - Python VM written in Swift” before.


All pass.

String parsing

I think that String parsing performance can be improved. 4000 cases with BigInts up to 1280 bits take ~40s on my laptop (2014 rMBP -> mac 11.7 (Big Sur), Xcode 13.2.1, Intel), Violet does this in 1.5s (there is a separate performance PR).

Violet secret:

Instead of using a single BigInt and multiplying it by radix, we will group scalars into words-sized chunks. Then we will raise those chunks to appropriate power and add together.

For example: 1_2345_6789 = (1 * 10^8) + (2345 * 10^4) + (6789 * 10^0)

So, we are doing most of our calculations in fast Word, and then we switch to slow BigInt for a few final operations.

Implemented here. Should I create an issue for this?

LiarPrincess avatar Jan 18 '23 15:01 LiarPrincess

Noticed poor performance in the BigInt initializer from a string as well. See pull request # 261.

mgriebling avatar Apr 18 '23 14:04 mgriebling