From 598f940f0b35f4f51f799c99d5b306235461495e Mon Sep 17 00:00:00 2001 From: Yann Simon Date: Wed, 20 Mar 2019 11:41:38 +0100 Subject: [PATCH] remove 'collection.breakOut' The performances stay similar --- benchmarks/src/main/scala/json/ToJsonBenchmark.scala | 10 +++++----- json/src/main/scala/io/sphere/json/ToJSON.scala | 11 ++++++----- util/src/main/scala/Reflect.scala | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/benchmarks/src/main/scala/json/ToJsonBenchmark.scala b/benchmarks/src/main/scala/json/ToJsonBenchmark.scala index f7ce764c..78ae2d9e 100644 --- a/benchmarks/src/main/scala/json/ToJsonBenchmark.scala +++ b/benchmarks/src/main/scala/json/ToJsonBenchmark.scala @@ -19,11 +19,11 @@ class ToJsonBenchmark { /* on local mac jmh:run -Benchmark Mode Cnt Score Error Units -ToJsonBenchmark.listWriter thrpt 10 70,065 ± 0,967 ops/s -ToJsonBenchmark.seqWriter thrpt 10 63,512 ± 3,889 ops/s -ToJsonBenchmark.serializeCaseClassToString thrpt 10 37,925 ± 2,252 ops/s -ToJsonBenchmark.vectorWriter thrpt 10 63,762 ± 1,470 ops/s +Benchmark Mode Cnt Score Error Units +ToJsonBenchmark.listWriter thrpt 10 68,770 ± 1,157 ops/s +ToJsonBenchmark.seqWriter thrpt 10 65,792 ± 1,191 ops/s +ToJsonBenchmark.serializeCaseClassToString thrpt 10 39,142 ± 0,574 ops/s +ToJsonBenchmark.vectorWriter thrpt 10 64,359 ± 2,162 ops/s */ @Benchmark diff --git a/json/src/main/scala/io/sphere/json/ToJSON.scala b/json/src/main/scala/io/sphere/json/ToJSON.scala index 870f415e..3257f5bb 100644 --- a/json/src/main/scala/io/sphere/json/ToJSON.scala +++ b/json/src/main/scala/io/sphere/json/ToJSON.scala @@ -2,7 +2,6 @@ package io.sphere.json import cats.data.NonEmptyList -import scala.collection.breakOut import java.util.{Currency, Locale, UUID} import io.sphere.util.{BaseMoney, HighPrecisionMoney, Money} @@ -44,15 +43,17 @@ object ToJSON { } implicit def seqWriter[@specialized A](implicit w: ToJSON[A]): ToJSON[Seq[A]] = new ToJSON[Seq[A]] { - def write(s: Seq[A]): JValue = JArray(s.map(w.write)(breakOut)) + def write(s: Seq[A]): JValue = JArray(s.iterator.map(w.write).toList) } implicit def setWriter[@specialized A](implicit w: ToJSON[A]): ToJSON[Set[A]] = new ToJSON[Set[A]] { - def write(s: Set[A]): JValue = JArray(s.map(w.write)(breakOut)) + def write(s: Set[A]): JValue = JArray(s.iterator.map(w.write).toList) } implicit def vectorWriter[@specialized A](implicit w: ToJSON[A]): ToJSON[Vector[A]] = new ToJSON[Vector[A]] { - def write(v: Vector[A]): JValue = JArray(v.map(w.write)(breakOut)) + def write(v: Vector[A]): JValue = { + JArray(v.iterator.map(w.write).toList) + } } implicit val intWriter: ToJSON[Int] = new ToJSON[Int] { @@ -88,7 +89,7 @@ object ToJSON { } implicit def mapWriter[A: ToJSON]: ToJSON[Map[String, A]] = new ToJSON[Map[String, A]] { - def write(m: Map[String, A]) = JObject(m.map { case (k, v) => JField(k, toJValue(v)) }(breakOut): _*) + def write(m: Map[String, A]) = JObject(m.iterator.map { case (k, v) => JField(k, toJValue(v)) }.toList) } implicit val moneyWriter: ToJSON[Money] = new ToJSON[Money] { diff --git a/util/src/main/scala/Reflect.scala b/util/src/main/scala/Reflect.scala index e562fb68..9b01aa06 100644 --- a/util/src/main/scala/Reflect.scala +++ b/util/src/main/scala/Reflect.scala @@ -43,6 +43,7 @@ object Reflect extends Logging { } sym.children + .iterator .collect { case m: MethodSymbol if m.isCaseAccessor && !m.isPrivate => m } .zipWithIndex .map { case (ms, idx) => @@ -52,7 +53,7 @@ object Reflect extends Logging { case _: NoSuchMethodException => None } CaseClassFieldMeta(ms.name, defaultValue) - }(collection.breakOut) + }.toIndexedSeq } } }