diff options
Diffstat (limited to 'benchmarks')
-rwxr-xr-x | benchmarks/2.12/benchmark | 10 | ||||
-rw-r--r-- | benchmarks/2.12/src/adt1.scala | 78 | ||||
-rw-r--r-- | benchmarks/2.12/src/magnolia/show_50.scala | 100 | ||||
-rw-r--r-- | benchmarks/2.12/src/scalaz-deriving/show_50.scala | 61 | ||||
-rwxr-xr-x | benchmarks/fetch.sh | 8 |
5 files changed, 203 insertions, 54 deletions
diff --git a/benchmarks/2.12/benchmark b/benchmarks/2.12/benchmark index 744639d..513e7bd 100755 --- a/benchmarks/2.12/benchmark +++ b/benchmarks/2.12/benchmark @@ -6,17 +6,19 @@ shift benchmark() { DERIVATION="$1" TEST="$2" + ADT="$3" echo "$DERIVATION/$TEST:" - echo "src/adt.scala" > .script + echo "src/$ADT.scala" > .script for I in $(seq 1 $COUNT); do echo "src/$DERIVATION/$TEST.scala" >> .script done - cat .script | scalac-2.12 -Xresident -d bin -cp $(ls lib/* | tr '\n' :)bin | ts -i -s '%M:%.S' > out.log + cat .script | scalac -Xplugin:lib/paradise.jar -Ypartial-unification -Xresident -d bin -cp $(ls lib/* | tr '\n' :)bin | ts -i -s '%M:%.S' > out.log cat out.log | tail -n +2 | paste -d' ' - .script | sed 's/nsc.//g' | head -n -1 echo } for J in "$@"; do - benchmark magnolia "$J" - benchmark kittens "$J" + benchmark magnolia "$J" "adt" + benchmark kittens "$J" "adt" + benchmark scalaz-deriving "$J" "adt1" done diff --git a/benchmarks/2.12/src/adt1.scala b/benchmarks/2.12/src/adt1.scala new file mode 100644 index 0000000..f9ab65f --- /dev/null +++ b/benchmarks/2.12/src/adt1.scala @@ -0,0 +1,78 @@ +package adt1 + +import scalaz._ +import Scalaz._ + +// @deriving(Show, Equal) sealed trait Tree +// @deriving(Show, Equal) case class Leaf(value: String) extends Tree +// @deriving(Show, Equal) case class Branch(left: Tree, right: Tree) extends Tree + +// @deriving(Show, Equal) sealed trait GTree[T] +// @deriving(Show, Equal) case class GLeaf[T](value: String) extends GTree[T] +// @deriving(Show, Equal) case class GBranch[T](left: GTree[T], right: GTree[T]) extends GTree[T] + +// @deriving(Show, Equal) sealed trait Entity + +// @deriving(Show, Equal) case class Company(name: String) extends Entity +// @deriving(Show, Equal) case class Human(name: String, age: Int) extends Entity +// @deriving(Show, Equal) case class Address(line1: String, occupant: Human) + +@deriving(Show, Equal) sealed trait Alphabet + +@deriving(Show, Equal) case class Greek(άλφα: Letter, + βήτα: Letter, + γάμα: Letter, + δέλτα: Letter, + έψιλον: Letter, + ζήτα: Letter, + ήτα: Letter, + θήτα: Letter) + extends Alphabet + +@deriving(Show, Equal) case class Cyrillic(б: Letter, в: Letter, г: Letter, д: Letter, ж: Letter, з: Letter) + extends Alphabet + +@deriving(Show, Equal) case class Latin(a: Letter, + b: Letter, + c: Letter, + d: Letter, + e: Letter, + f: Letter, + g: Letter, + h: Letter, + i: Letter, + j: Letter, + k: Letter, + l: Letter, + m: Letter, + n: Letter, + o: Letter, + p: Letter, + q: Letter, + r: Letter, + s: Letter, + t: Letter, + u: Letter, + v: Letter) + extends Alphabet + +//@deriving(Show, Equal) case class Letter(name: String, phonetic: String) +//@deriving(Show, Equal) case class Country(name: String, language: Language, leader: Person, existence: DateRange) +//@deriving(Show, Equal) case class Language(name: String, code: String, alphabet: Alphabet) +//@deriving(Show, Equal) case class Person(name: String, dateOfBirth: Date) +//@deriving(Show, Equal) case class Date(year: Int, month: Month, day: Int) +//@deriving(Show, Equal) case class DateRange(from: Date, toDate: Date) + +// @deriving(Show, Equal) sealed trait Month +// @deriving(Show, Equal) case object Jan extends Month +// @deriving(Show, Equal) case object Feb extends Month +// @deriving(Show, Equal) case object Mar extends Month +// @deriving(Show, Equal) case object Apr extends Month +// @deriving(Show, Equal) case object May extends Month +// @deriving(Show, Equal) case object Jun extends Month +// @deriving(Show, Equal) case object Jul extends Month +// @deriving(Show, Equal) case object Aug extends Month +// @deriving(Show, Equal) case object Sep extends Month +// @deriving(Show, Equal) case object Oct extends Month +// @deriving(Show, Equal) case object Nov extends Month +// @deriving(Show, Equal) case object Dec extends Month diff --git a/benchmarks/2.12/src/magnolia/show_50.scala b/benchmarks/2.12/src/magnolia/show_50.scala index 27cfbae..df431af 100644 --- a/benchmarks/2.12/src/magnolia/show_50.scala +++ b/benchmarks/2.12/src/magnolia/show_50.scala @@ -1,58 +1,58 @@ import magnolia._, examples._ object Gen { - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] - Show.generic[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] + Show.gen[adt.Alphabet] } diff --git a/benchmarks/2.12/src/scalaz-deriving/show_50.scala b/benchmarks/2.12/src/scalaz-deriving/show_50.scala new file mode 100644 index 0000000..37a00f0 --- /dev/null +++ b/benchmarks/2.12/src/scalaz-deriving/show_50.scala @@ -0,0 +1,61 @@ +import adt1._ + +import scalaz._ +import Scalaz._ + +object Gen { + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] + Show[Alphabet] +} diff --git a/benchmarks/fetch.sh b/benchmarks/fetch.sh index 6644a06..4f7105d 100755 --- a/benchmarks/fetch.sh +++ b/benchmarks/fetch.sh @@ -10,4 +10,12 @@ for V in 2.12 2.11; do wget -O $V/lib/cats-kernel.jar "http://repo1.maven.org/maven2/org/typelevel/cats-kernel_$V/1.0.0-RC1/cats-kernel_$V-1.0.0-RC1.jar" wget -O $V/lib/cats-core.jar "http://repo1.maven.org/maven2/org/typelevel/cats-core_$V/1.0.0-RC1/cats-core_$V-1.0.0-RC1.jar" wget -O $V/lib/kittens.jar "http://repo1.maven.org/maven2/org/typelevel/kittens_$V/1.0.0-RC1/kittens_$V-1.0.0-RC1.jar" + + wget -O $V/lib/iotaz.jar "https://repo1.maven.org/maven2/io/frees/iotaz-core_$V/0.3.2/iotaz-core_$V-0.3.2.jar" + wget -O $V/lib/scalaz.jar "https://repo1.maven.org/maven2/org/scalaz/scalaz-core_$V/7.2.16/scalaz-core_$V-7.2.16.jar" + wget -O $V/lib/deriving-macro.jar "https://repo1.maven.org/maven2/com/fommil/deriving-macro_$V/0.9.0/deriving-macro_$V-0.9.0.jar" + wget -O $V/lib/paradise.jar "https://repo1.maven.org/maven2/org/scalamacros/paradise_$V.4/2.1.1/paradise_$V.4-2.1.1.jar" + wget -O $V/lib/scalaz-deriving.jar "https://repo1.maven.org/maven2/com/fommil/scalaz-deriving_$V/0.9.0/scalaz-deriving_$V-0.9.0.jar" + wget -O $V/lib/scalaz-deriving-core.jar "https://repo1.maven.org/maven2/com/fommil/scalaz-deriving-base_$V/0.9.0/scalaz-deriving-base_$V-0.9.0.jar" + done |