-
Notifications
You must be signed in to change notification settings - Fork 32
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
Benchmarks #113
Draft
dlesnoff
wants to merge
10
commits into
nim-lang:master
Choose a base branch
from
dlesnoff:benchmarks
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Benchmarks #113
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
7e57fce
Add a initRandomBigInt proc
dlesnoff 49a7817
Add and test initRandomBigInt
dlesnoff 6c28940
Make examples standalone files and export some of their functions
dlesnoff df86867
Benchmark some of the examples
dlesnoff c56e7b6
Add two nimble tasks for benchmarking
dlesnoff b4a1beb
Add a new type and optional parameter to generate random bigints with…
dlesnoff 87b1af3
Adapt tests with new random bigints function, add a memory limit, and…
dlesnoff 2934674
Merge branch 'random' into benchmarks
dlesnoff 3fe120e
Benchmark random, multiplication and division of bigints of up to 10_…
dlesnoff ebe9135
Merge branch 'master' into benchmarks
dlesnoff File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
import bigints | ||
import benchy | ||
import random | ||
|
||
block: # Bench random generation | ||
randomize() | ||
var n = 100 | ||
timeIt "bench Random generation of bigints with 100 limbs": | ||
keep initRandomBigint(n) | ||
timeIt "bench Random generation of bigints with 1_000 limbs": | ||
keep initRandomBigint(n) | ||
n = 5_000 | ||
timeIt "bench Random generation of bigints with 5_000 limbs": | ||
keep initRandomBigint(n) | ||
n = 10_000 | ||
timeIt "bench Random generation of bigints with 10_000 limbs": | ||
keep initRandomBigint(n) | ||
block: # Bench multiplication | ||
randomize() | ||
var n = 100 | ||
timeIt "bench Multiplication of bigints with 100 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a*b | ||
n = 1_000 | ||
timeIt "bench Multiplication of bigints with 1_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a*b | ||
n = 5_000 | ||
timeIt "bench Multiplication of bigints with 5_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a*b | ||
n = 10_000 | ||
timeIt "bench Multiplication of bigints with 10_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a*b | ||
block: # Bench division | ||
randomize() | ||
var n = 100 | ||
timeIt "bench Division of bigints with 100 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a div b | ||
n = 1_000 | ||
timeIt "bench Division of bigints with 1_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a div b | ||
n = 5_000 | ||
timeIt "bench Division of bigints with 5_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a div b | ||
n = 10_000 | ||
timeIt "bench Division of bigints with 10_000 limbs": | ||
var a: Bigint = initRandomBigint(n) | ||
var b: Bigint = initRandomBigint(n) | ||
keep a div b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import bigints | ||
import benchy | ||
from std/math import `^` | ||
import pidigits | ||
import rc_combperm | ||
|
||
block: # Binomial and permutations | ||
timeIt "Permutation 1000, 969": | ||
keep perm(1000, 969) | ||
|
||
timeIt "Binomial computation 1000, 969": | ||
keep comb(1000, 969) | ||
|
||
block: # Power computation | ||
timeIt "Power computation of 5^4^3^2": | ||
keep 5.initBigInt.pow 4 ^ (3 ^ 2) | ||
timeIt "Powers of two": | ||
var power = 2.initBigInt | ||
for _ in 1 .. 128000: | ||
power = power * 2.initBigInt | ||
|
||
block: # Pidigits example | ||
timeIt "Computation of 100 digits of Pi": | ||
var i = 0 | ||
while i < 100: | ||
var d: int32 = findPiDigit() | ||
inc(i) | ||
eliminateDigit(d) | ||
timeIt "Computation of 1000 digits of Pi": | ||
var i = 0 | ||
while i < 1000: | ||
var d: int32 = findPiDigit() | ||
inc(i) | ||
eliminateDigit(d) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
path = "$projectPath/../src" | ||
path = "$projectPath/../examples" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to comment out the static tests and randomized versions. In the future, I will need to remove these comments and let this file in its initial state.