Replace foreach by for loop

threading
Laurent 3 years ago
parent 897098499f
commit 526e50f8e4
  1. 34
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt

@ -11,6 +11,7 @@ import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.filter import net.pokeranalytics.android.model.filter.filter
import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.util.extensions.startOfDay import net.pokeranalytics.android.util.extensions.startOfDay
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@ -200,7 +201,7 @@ class Calculator {
fun computeGroups(realm: Realm, groups: List<ComputableGroup>, options: Options = Options()): Report { fun computeGroups(realm: Realm, groups: List<ComputableGroup>, options: Options = Options()): Report {
val report = Report(options) val report = Report(options)
groups.forEach { group -> for (group in groups) {
// Clean existing computables / sessionSets if group is reused // Clean existing computables / sessionSets if group is reused
group.cleanup() group.cleanup()
@ -251,6 +252,8 @@ class Calculator {
// Timber.d("$$$ buyin = ${it.ratedBuyin} $$$ net result = ${it.ratedNet}") // Timber.d("$$$ buyin = ${it.ratedBuyin} $$$ net result = ${it.ratedNet}")
// } // }
val d1 = Date()
var ratedNet = computables.sum(ComputableResult.Field.RATED_NET.identifier).toDouble() var ratedNet = computables.sum(ComputableResult.Field.RATED_NET.identifier).toDouble()
if (options.includedTransactions.isNotEmpty()) { if (options.includedTransactions.isNotEmpty()) {
for (transactionType in options.includedTransactions) { for (transactionType in options.includedTransactions) {
@ -331,6 +334,7 @@ class Calculator {
averageBB = bbSum / bbSessionCount averageBB = bbSum / bbSessionCount
results.addStat(AVERAGE_NET_BB, averageBB) results.addStat(AVERAGE_NET_BB, averageBB)
} }
val d2 = Date()
val shouldIterateOverComputables = val shouldIterateOverComputables =
(options.progressValues == Options.ProgressValues.STANDARD || options.computeLongestStreak) (options.progressValues == Options.ProgressValues.STANDARD || options.computeLongestStreak)
@ -350,7 +354,7 @@ class Calculator {
var currentStreak = 0 var currentStreak = 0
var tITMCount = 0 var tITMCount = 0
computables.forEach { computable -> for (computable in computables) {
index++ index++
tSum += computable.ratedNet tSum += computable.ratedNet
tBBSum += computable.bbNet tBBSum += computable.bbNet
@ -415,6 +419,8 @@ class Calculator {
} }
val d3 = Date()
val sessionSets = computableGroup.sessionSets(realm, options.shouldSortValues) val sessionSets = computableGroup.sessionSets(realm, options.shouldSortValues)
results.addStat(NUMBER_OF_SETS, sessionSets.size.toDouble()) results.addStat(NUMBER_OF_SETS, sessionSets.size.toDouble())
@ -449,7 +455,7 @@ class Calculator {
val daysSet = mutableSetOf<Date>() val daysSet = mutableSetOf<Date>()
var tMaxDuration = 0.0 var tMaxDuration = 0.0
sessionSets.forEach { sessionSet -> for (sessionSet in sessionSets) {
tIndex++ tIndex++
val setStats = SSStats(sessionSet, computableGroup.query) val setStats = SSStats(sessionSet, computableGroup.query)
@ -529,6 +535,8 @@ class Calculator {
} }
val d4 = Date()
var hourlyRate = 0.0 var hourlyRate = 0.0
if (gHourlyDuration != null) { if (gHourlyDuration != null) {
@ -561,10 +569,10 @@ class Calculator {
var stdSum = 0.0 var stdSum = 0.0
var stdBBSum = 0.0 var stdBBSum = 0.0
var stdBBper100HandsSum = 0.0 var stdBBper100HandsSum = 0.0
computables.forEach { session -> for (computable in computables) {
stdSum += (session.ratedNet - average).pow(2.0) stdSum += (computable.ratedNet - average).pow(2.0)
stdBBSum += (session.bbNet - averageBB).pow(2.0) stdBBSum += (computable.bbNet - averageBB).pow(2.0)
stdBBper100HandsSum += (session.bbPer100Hands - bbPer100Hands).pow(2.0) stdBBper100HandsSum += (computable.bbPer100Hands - bbPer100Hands).pow(2.0)
} }
val standardDeviation = sqrt(stdSum / computables.size) val standardDeviation = sqrt(stdSum / computables.size)
val standardDeviationBB = sqrt(stdBBSum / computables.size) val standardDeviationBB = sqrt(stdBBSum / computables.size)
@ -577,7 +585,7 @@ class Calculator {
// Session Set // Session Set
if (gHourlyDuration != null) { if (gHourlyDuration != null) {
var hourlyStdSum = 0.0 var hourlyStdSum = 0.0
sessionSets.forEach { set -> for (set in sessionSets) {
val ssStats = SSStats(set, computableGroup.query) val ssStats = SSStats(set, computableGroup.query)
val sHourlyRate = ssStats.hourlyRate val sHourlyRate = ssStats.hourlyRate
hourlyStdSum += (sHourlyRate - hourlyRate).pow(2.0) hourlyStdSum += (sHourlyRate - hourlyRate).pow(2.0)
@ -588,6 +596,16 @@ class Calculator {
} }
} }
val d5 = Date()
val s1 = d2.time - d1.time
val s2 = d3.time - d2.time
val s3 = d4.time - d3.time
val s4 = d5.time - d4.time
Timber.d("Section 1 = $s1")
Timber.d("Section 2 = $s2")
Timber.d("Section 3 = $s3")
Timber.d("Section 4 = $s4")
return results return results
} }

Loading…
Cancel
Save