Scala Set API で奇妙な動作に遭遇しました。これは、プロジェクトの残りの部分に関連するものを取り除いた私の関数です
def grade(...): Double = {
val setA: HashSet = // get from somewhere else
val setB: HashSet = // get from somewhere else
if ((setA size) == 0 || (setB size) == 0) return 0
else return (setA & setB size) / (setA | set B size)
}
この関数はループ内で何度も呼び出され、ループ全体が約 4.5 秒で実行されます。ただし、ユニオンのサイズをサイズの合計 (大まかな概算) に置き換えると、ユニオン操作の影響をテストするために、実行時間が約 0.35 秒に短縮されます...
def grade(...): Double = {
val setA: HashSet = // get from somewhere else
val setB: HashSet = // get from somewhere else
if ((setA size) == 0 || (setB size) == 0) return 0
else return (setA & setB size) / (setA size + set B size)
}