Удаляем крайние дни

This commit is contained in:
2025-12-15 11:30:50 +00:00
parent ab18d9770f
commit f4ade418d6
3 changed files with 29 additions and 0 deletions

View File

@@ -7,6 +7,7 @@
#include "record.hpp"
#include "day_stats.hpp"
#include "aggregation.hpp"
#include "utils.hpp"
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
@@ -37,6 +38,15 @@ int main(int argc, char** argv) {
<< " in " << std::fixed << std::setprecision(3) << agg_time << " sec"
<< std::endl;
// Удаляем крайние дни (могут быть неполными из-за параллельного чтения)
trim_edge_days(days, rank, size);
std::cout << "Rank " << rank
<< ": after trim " << days.size() << " days"
<< " [" << (days.empty() ? 0 : days.front().day)
<< ".." << (days.empty() ? 0 : days.back().day) << "]"
<< std::endl;
MPI_Finalize();
return 0;
}

View File

@@ -112,3 +112,16 @@ ByteRange calculate_byte_range(int rank, int size, int64_t file_size,
return range;
}
void trim_edge_days(std::vector<DayStats>& days, int rank, int size) {
if (days.empty()) return;
if (rank == 0) {
days.pop_back();
} else if (rank == size - 1) {
days.erase(days.begin());
} else {
days.pop_back();
days.erase(days.begin());
}
}

View File

@@ -30,3 +30,9 @@ ByteRange calculate_byte_range(int rank, int size, int64_t file_size,
// Получение размера файла
int64_t get_file_size(const std::string& path);
// Удаляет крайние дни, которые могут быть неполными из-за параллельного чтения
// rank 0: удаляет последний день
// последний rank: удаляет первый день
// промежуточные: удаляют первый и последний дни
void trim_edge_days(std::vector<DayStats>& days, int rank, int size);