Last active
June 27, 2021 16:40
-
-
Save deanwampler/e72dc53ba2d4a459941bfe47dc72cbff to your computer and use it in GitHub Desktop.
This file contains hidden or 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
import scala.quoted.* | |
@main def InlinePerf(numberOfTrials: Int*) = | |
class Thing(var count: Int, var label: String) | |
def trial(n: Int) = | |
val startEnabled = System.nanoTime() | |
val thing1 = new Thing(0, "label") | |
for i <- 1 to n | |
do | |
invariantEnabled(thing1.label == "label") { | |
thing1.count = (i * 2) % 3 | |
} | |
val endEnabled = System.nanoTime() | |
val startDisabled = System.nanoTime() | |
val thing2 = new Thing(0, "label") | |
for i <- 1 to n | |
do | |
invariantDisabled(thing2.label == "label") { | |
thing2.count = (i * 2) % 3 | |
} | |
val endDisabled = System.nanoTime() | |
val startNoInline = System.nanoTime() | |
val thing3 = new Thing(0, "label") | |
for i <- 1 to n | |
do | |
invariantNoInline(thing3.label == "label") { | |
thing3.count = (i * 2) % 3 | |
} | |
val endNoInline = System.nanoTime() | |
val diffEnabled = endEnabled - startEnabled | |
val diffDisabled = endDisabled - startDisabled | |
val diffNoInline = endNoInline - startNoInline | |
val percent1 = (100.0 * diffEnabled)/diffDisabled | |
val percent2 = (100.0 * diffNoInline)/diffDisabled | |
println(f"| $n%6d | $diffEnabled%8d | $diffDisabled%8d | $percent1%7.2f%% " + | |
f"| $diffNoInline%8d | $percent2%7.2f%% |") | |
header | |
footer | |
if numberOfTrials.size == 0 then trial(1000) | |
else for n <- numberOfTrials do trial(n) | |
footer | |
def header = | |
println("| N | Elapsed Times (nanos) |") | |
println("| | Enabled | Disabled | E/D% | NoInline | N/D% |") | |
def footer = | |
println("|+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment