Skip to content

Speed up digit generation by using random byte array#508

Merged
snuyanzin merged 2 commits into
datafaker-net:mainfrom
snuyanzin:digits
Nov 1, 2022
Merged

Speed up digit generation by using random byte array#508
snuyanzin merged 2 commits into
datafaker-net:mainfrom
snuyanzin:digits

Conversation

@snuyanzin
Copy link
Copy Markdown
Collaborator

The idea is to use generation of random byte array to generate digits.
There is an assumption allowing it to work
number of different digits is less then size of byte range and it is ok (10 vs 256)

So this allows it to speed up for about 30-40%
digitByDigit1 - current approach for 1 digit
digitByDigit10 - current approach for 10 digits
digitByDigit100 - current approach for 100 digits
and etc.

Benchmark            Mode  Cnt      Score      Error   Units
byteArrayBased1     thrpt   10  49607.067 ± 6887.798  ops/ms
byteArrayBased10    thrpt   10  15848.161 ± 1568.289  ops/ms
byteArrayBased100   thrpt   10   2170.854 ±   64.167  ops/ms
byteArrayBased1000  thrpt   10    226.260 ±    0.349  ops/ms
digitByDigit1       thrpt   10  32256.580 ±  536.872  ops/ms
digitByDigit10      thrpt   10  11202.666 ±  858.150  ops/ms
digitByDigit100     thrpt   10   1511.857 ±  253.636  ops/ms
digitByDigit1000    thrpt   10    185.054 ±    0.618  ops/ms

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Nov 1, 2022

Codecov Report

Merging #508 (7b5de28) into main (ddd1569) will increase coverage by 0.22%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##               main     #508      +/-   ##
============================================
+ Coverage     93.09%   93.32%   +0.22%     
- Complexity     2184     2216      +32     
============================================
  Files           235      238       +3     
  Lines          4618     4656      +38     
  Branches        491      493       +2     
============================================
+ Hits           4299     4345      +46     
+ Misses          200      190      -10     
- Partials        119      121       +2     
Impacted Files Coverage Δ
...main/java/net/datafaker/providers/base/Number.java 100.00% <100.00%> (ø)
...ker/idnumbers/pt/br/IdNumberGeneratorPtBrUtil.java 92.59% <0.00%> (-3.71%) ⬇️
.../main/java/net/datafaker/service/files/EnFile.java 93.33% <0.00%> (ø)
.../net/datafaker/providers/movie/MovieProviders.java 100.00% <0.00%> (ø)
.../net/datafaker/transformations/sql/SqlDialect.java 94.82% <0.00%> (ø)
...afaker/providers/videogame/VideoGameProviders.java 100.00% <0.00%> (ø)
...ava/net/datafaker/providers/videogame/Control.java 100.00% <0.00%> (ø)
...va/net/datafaker/providers/movie/StudioGhibli.java 100.00% <0.00%> (ø)
...n/java/net/datafaker/providers/movie/Doraemon.java 100.00% <0.00%> (ø)
.../net/datafaker/transformations/CsvTransformer.java 96.61% <0.00%> (+0.18%) ⬆️
... and 2 more

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@snuyanzin snuyanzin merged commit b54258b into datafaker-net:main Nov 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants