diff options
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/2.12/src/adt1.scala | 63 | ||||
-rw-r--r-- | benchmarks/2.12/src/foo.scala | 1 | ||||
-rw-r--r-- | benchmarks/2.12/src/kittens/one.scala | 53 | ||||
-rw-r--r-- | benchmarks/2.12/src/magnolia/one.scala | 49 | ||||
-rw-r--r-- | benchmarks/2.12/src/magnolia/show_tree_50.scala | 100 | ||||
-rw-r--r-- | benchmarks/2.12/src/runtime.scala | 66 | ||||
-rw-r--r-- | benchmarks/2.12/src/scalaz-deriving/one.scala | 55 |
7 files changed, 308 insertions, 79 deletions
diff --git a/benchmarks/2.12/src/adt1.scala b/benchmarks/2.12/src/adt1.scala index f9ab65f..2efbdd4 100644 --- a/benchmarks/2.12/src/adt1.scala +++ b/benchmarks/2.12/src/adt1.scala @@ -20,40 +20,45 @@ import Scalaz._ @deriving(Show, Equal) sealed trait Alphabet @deriving(Show, Equal) case class Greek(άλφα: Letter, - βήτα: Letter, - γάμα: Letter, - δέλτα: Letter, - έψιλον: Letter, - ζήτα: Letter, - ήτα: Letter, - θήτα: Letter) + βήτα: Letter, + γάμα: Letter, + δέλτα: Letter, + έψιλον: Letter, + ζήτα: Letter, + ήτα: Letter, + θήτα: Letter) extends Alphabet -@deriving(Show, Equal) case class Cyrillic(б: Letter, в: Letter, г: Letter, д: Letter, ж: Letter, з: Letter) +@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) + 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) diff --git a/benchmarks/2.12/src/foo.scala b/benchmarks/2.12/src/foo.scala new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/benchmarks/2.12/src/foo.scala @@ -0,0 +1 @@ + diff --git a/benchmarks/2.12/src/kittens/one.scala b/benchmarks/2.12/src/kittens/one.scala new file mode 100644 index 0000000..9e54511 --- /dev/null +++ b/benchmarks/2.12/src/kittens/one.scala @@ -0,0 +1,53 @@ +import adt._ +import cats._ +import derived._ +import cats.Show +import cats.instances.all._ + +sealed trait Alphabet + +case class Greek(άλφα: Letter, + βήτα: Letter, + γάμα: Letter, + δέλτα: Letter, + έψιλον: Letter, + ζήτα: Letter, + ήτα: Letter, + θήτα: Letter) + extends Alphabet + +case class Cyrillic(б: Letter, в: Letter, г: Letter, д: Letter, ж: Letter, з: Letter) + extends Alphabet + +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 + +case class Letter(name: String, phonetic: String) +case class Country(name: String, language: Language) +case class Language(name: String, code: String, alphabet: Latin) + +object Gen { + derive.show[Alphabet] + derive.eq[Alphabet] +} diff --git a/benchmarks/2.12/src/magnolia/one.scala b/benchmarks/2.12/src/magnolia/one.scala new file mode 100644 index 0000000..4fb325c --- /dev/null +++ b/benchmarks/2.12/src/magnolia/one.scala @@ -0,0 +1,49 @@ +import magnolia._, examples._ + +sealed trait Alphabet + +case class Greek(άλφα: Letter, + βήτα: Letter, + γάμα: Letter, + δέλτα: Letter, + έψιλον: Letter, + ζήτα: Letter, + ήτα: Letter, + θήτα: Letter) + extends Alphabet + +case class Cyrillic(б: Letter, в: Letter, г: Letter, д: Letter, ж: Letter, з: Letter) + extends Alphabet + +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 + +case class Letter(name: String, phonetic: String) +case class Country(name: String, language: Language) +case class Language(name: String, code: String, alphabet: Latin) + +object Gen { + Show.gen[adt.Alphabet] + Eq.gen[adt.Alphabet] +} diff --git a/benchmarks/2.12/src/magnolia/show_tree_50.scala b/benchmarks/2.12/src/magnolia/show_tree_50.scala index a06513a..3e593e7 100644 --- a/benchmarks/2.12/src/magnolia/show_tree_50.scala +++ b/benchmarks/2.12/src/magnolia/show_tree_50.scala @@ -1,58 +1,58 @@ import magnolia._, examples._ object Gen { - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] - Show.generic[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] + Show.gen[adt.Tree] } diff --git a/benchmarks/2.12/src/runtime.scala b/benchmarks/2.12/src/runtime.scala new file mode 100644 index 0000000..6a94163 --- /dev/null +++ b/benchmarks/2.12/src/runtime.scala @@ -0,0 +1,66 @@ +import adt._ +import cats._ +import derived._ +import cats.Show +import cats.instances.all._ +import estrapade._ +import magnolia._ + +object Gen extends TestApp { + + val latin = Latin( + Letter("one", "two"), + Letter("three", "four"), + Letter("five", "six"), + Letter("seven", "eight"), + Letter("nine", "ten"), + Letter("eleven", "twelve"), + Letter("one", "two"), + Letter("three", "four"), + Letter("five", "six"), + Letter("seven", "eight"), + Letter("nine", "ten"), + Letter("eleven", "twelve"), + Letter("one", "two"), + Letter("three", "four"), + Letter("five", "six"), + Letter("seven", "eight"), + Letter("nine", "ten"), + Letter("eleven", "twelve"), + Letter("one", "two"), + Letter("three", "four"), + Letter("five", "six"), + Letter("seven", "eight") + ) + + def tests() = { + println("Warming up JVM") + + var n = 0 + var s: Any = null + while (n < 5000000) { + s = derive.show[Latin] //.show(latin) + s = magnolia.examples.Show.generic[Latin] //.show(latin) + n += 1 + } + + println("Warm") + test("Kittens") { + var n = 0 + var s: Any = null + while (n < 1000000) { + s = derive.show[Latin] //.show(latin) + n += 1 + } + }.returns() + + test("Magnolia") { + var n = 0 + var s: Any = null + while (n < 1000000) { + s = magnolia.examples.Show.generic[Latin] //.show(latin) + n += 1 + } + }.returns() + } +} diff --git a/benchmarks/2.12/src/scalaz-deriving/one.scala b/benchmarks/2.12/src/scalaz-deriving/one.scala new file mode 100644 index 0000000..ecd0da2 --- /dev/null +++ b/benchmarks/2.12/src/scalaz-deriving/one.scala @@ -0,0 +1,55 @@ +import scalaz._ +import Scalaz._ + +@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) +@deriving(Show, Equal) case class Language(name: String, code: String, alphabet: Latin) + +object Gen { + Show[Alphabet] + Equal[Alphabet] +} |