mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
optimize selectedDivesGasUsed()
-return the result instead of storing in a parameter, we now know that the list contains only those results that are generated in the function -allocate the result with the correct length right from the start -do not iterate over keys of a map and then do a map lookup to get the value but use an iterator that gives us both right from the start -remove one call alltogether as the results were not used there Signed-off-by: Rolf Eike Beer <eike@sf-mail.de>
This commit is contained in:
parent
1f4777a287
commit
36644dc9f7
4 changed files with 9 additions and 22 deletions
|
@ -375,7 +375,7 @@ static bool lessThan(const QPair<QString, int> &a, const QPair<QString, int> &b)
|
|||
return a.second < b.second;
|
||||
}
|
||||
|
||||
void selectedDivesGasUsed(QVector<QPair<QString, int> > &gasUsedOrdered)
|
||||
QVector<QPair<QString, int>> selectedDivesGasUsed()
|
||||
{
|
||||
int i, j;
|
||||
struct dive *d;
|
||||
|
@ -391,10 +391,13 @@ void selectedDivesGasUsed(QVector<QPair<QString, int> > &gasUsedOrdered)
|
|||
gasUsed[gasName] += diveGases[j].mliter;
|
||||
}
|
||||
}
|
||||
Q_FOREACH(const QString& gas, gasUsed.keys()) {
|
||||
gasUsedOrdered.append(qMakePair(gas, gasUsed[gas]));
|
||||
}
|
||||
QVector<QPair<QString, int>> gasUsedOrdered;
|
||||
gasUsedOrdered.reserve(gasUsed.size());
|
||||
for (auto it = gasUsed.cbegin(); it != gasUsed.cend(); ++it)
|
||||
gasUsedOrdered.append(qMakePair(it.key(), it.value()));
|
||||
std::sort(gasUsedOrdered.begin(), gasUsedOrdered.end(), lessThan);
|
||||
|
||||
return gasUsedOrdered;
|
||||
}
|
||||
|
||||
QString getUserAgent()
|
||||
|
|
|
@ -80,7 +80,7 @@ QString get_short_dive_date_string(timestamp_t when);
|
|||
QString get_trip_date_string(timestamp_t when, int nr, bool getday);
|
||||
QString uiLanguage(QLocale *callerLoc);
|
||||
QLocale getLocale();
|
||||
void selectedDivesGasUsed(QVector<QPair<QString, int> > &gasUsed);
|
||||
QVector<QPair<QString, int>> selectedDivesGasUsed();
|
||||
QString getUserAgent();
|
||||
QString printGPSCoords(const location_t *loc);
|
||||
|
||||
|
|
|
@ -97,10 +97,9 @@ void TabDiveStatistics::updateData()
|
|||
ui->timeLimits->setMinimum("");
|
||||
}
|
||||
|
||||
QVector<QPair<QString, int> > gasUsed;
|
||||
QVector<QPair<QString, int> > gasUsed = selectedDivesGasUsed();
|
||||
QString gasUsedString;
|
||||
volume_t vol;
|
||||
selectedDivesGasUsed(gasUsed);
|
||||
for (int j = 0; j < MAX_CYLINDERS; j++) {
|
||||
if (gasUsed.isEmpty())
|
||||
break;
|
||||
|
|
|
@ -542,21 +542,6 @@ void MainTab::updateDiveInfo(bool clear)
|
|||
int mean[MAX_CYLINDERS], duration[MAX_CYLINDERS];
|
||||
per_cylinder_mean_depth(&displayed_dive, select_dc(&displayed_dive), mean, duration);
|
||||
|
||||
// now let's get some gas use statistics
|
||||
QVector<QPair<QString, int> > gasUsed;
|
||||
QString gasUsedString;
|
||||
volume_t vol;
|
||||
selectedDivesGasUsed(gasUsed);
|
||||
for (int j = 0; j < MAX_CYLINDERS; j++) {
|
||||
if (gasUsed.isEmpty())
|
||||
break;
|
||||
QPair<QString, int> gasPair = gasUsed.last();
|
||||
gasUsed.pop_back();
|
||||
vol.mliter = gasPair.second;
|
||||
gasUsedString.append(gasPair.first).append(": ").append(get_volume_string(vol, true)).append("\n");
|
||||
}
|
||||
if (!gasUsed.isEmpty())
|
||||
gasUsedString.append("...");
|
||||
volume_t o2_tot = {}, he_tot = {};
|
||||
selected_dives_gas_parts(&o2_tot, &he_tot);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue