rorygraves / scalac_perf

The Scala programming language
http://www.scala-lang.org/
16 stars 3 forks source link

:: hashCode #54

Open mkeskells opened 6 years ago

mkeskells commented 6 years ago

Investigate the high call count

420422  scala.collection.immutable.$colon$colon::hashCode()I
mkeskells commented 6 years ago

it doesnt seems that a list is somthing that should be hashcoded a lot

cbwl commented 6 years ago

@rorygraves

hrhino commented 5 years ago

@mkeskells it's b/c lists are in types, which are used as hash keys

10893: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- scala.runtime.Statics.anyHash(Statics.java:122) <- scala.util.hashing.MurmurHash3.productHash(MurmurHash3.scala:68) <- scala.util.hashing.MurmurHash3$.productHash(MurmurHash3.scala:215) <- scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:149) <- scala.reflect.internal.Types$PolyType.hashCode(Types.scala:2656)
24338: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- scala.runtime.Statics.anyHash(Statics.java:122) <- scala.util.hashing.MurmurHash3.productHash(MurmurHash3.scala:68) <- scala.util.hashing.MurmurHash3$.productHash(MurmurHash3.scala:215) <- scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:149) <- scala.reflect.internal.Types$ExistentialType.hashCode(Types.scala:2717)
25432: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- java.util.WeakHashMap.hash(WeakHashMap.java:298) <- java.util.WeakHashMap.get(WeakHashMap.java:396) <- scala.collection.convert.Wrappers$JMapWrapperLike.get(Wrappers.scala:267) <- scala.collection.convert.Wrappers$JMapWrapperLike.get$(Wrappers.scala:266) <- scala.collection.convert.Wrappers$JMapWrapper.get(Wrappers.scala:303)
27096: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- scala.runtime.Statics.anyHash(Statics.java:122) <- scala.util.hashing.MurmurHash3.productHash(MurmurHash3.scala:68) <- scala.util.hashing.MurmurHash3$.productHash(MurmurHash3.scala:215) <- scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:149) <- scala.reflect.internal.Types$RefinedType.hashCode(Types.scala:1611)
32686: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- scala.runtime.Statics.anyHash(Statics.java:122) <- scala.util.hashing.MurmurHash3.productHash(MurmurHash3.scala:68) <- scala.util.hashing.MurmurHash3$.productHash(MurmurHash3.scala:215) <- scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:149) <- scala.reflect.internal.Types$MethodType.hashCode(Types.scala:2508)
46622: scala.collection.immutable.$colon$colon.hashCode(List.scala:452) <- scala.runtime.Statics.anyHash(Statics.java:122) <- scala.util.hashing.MurmurHash3.productHash(MurmurHash3.scala:68) <- scala.util.hashing.MurmurHash3$.productHash(MurmurHash3.scala:215) <- scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:149) <- scala.reflect.internal.Types$AnnotatedType.hashCode(Types.scala:3429)
hrhino commented 5 years ago

a lot of those are because of computeBaseTypeSeqOfCompoundType using a Map[List[Type], WeakReference[Type]]