From bd3766d8a75d43f8a67066e0d3de87b882124aa8 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Sat, 4 Feb 2012 17:35:39 +0100 Subject: [PATCH] Performance improvement --- .../akka/serialization/Serialization.scala | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/akka-actor/src/main/scala/akka/serialization/Serialization.scala b/akka-actor/src/main/scala/akka/serialization/Serialization.scala index ffe6dc9f04..e89adde8fb 100644 --- a/akka-actor/src/main/scala/akka/serialization/Serialization.scala +++ b/akka-actor/src/main/scala/akka/serialization/Serialization.scala @@ -118,23 +118,20 @@ class Serialization(val system: ExtendedActorSystem) extends Extension { * It traverses interfaces and super classes to find any configured Serializer that match * the class name. */ - def serializerFor(clazz: Class[_]): Serializer = { - - def resolve(c: Class[_]): Option[Serializer] = if (c ne null) { - serializerMap.get(c.getName) match { - case null ⇒ - val classes = c.getInterfaces ++ Seq(c.getSuperclass) - classes flatMap resolve headOption - case x ⇒ Some(x) - } - } else { - None - } - + def serializerFor(clazz: Class[_]): Serializer = if (bindings.isEmpty) { // quick path to default when no bindings are registered serializers("default") } else { + + def resolve(c: Class[_]): Option[Serializer] = + serializerMap.get(c.getName) match { + case null ⇒ + val classes = c.getInterfaces ++ Option(c.getSuperclass) + classes.view map resolve collectFirst { case Some(x) ⇒ x } + case x ⇒ Some(x) + } + serializerMap.get(clazz.getName) match { case null ⇒ val ser = resolve(clazz).getOrElse(serializers("default")) @@ -148,7 +145,6 @@ class Serialization(val system: ExtendedActorSystem) extends Extension { case ser ⇒ ser } } - } /** * Tries to load the specified Serializer by the FQN