Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Speed up digit generation by using random byte array #508

Merged
merged 2 commits into from
Nov 1, 2022

Conversation

snuyanzin
Copy link
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

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