This commit is contained in:
bronku 2025-12-13 22:11:52 +01:00
parent fddaf6b9d0
commit 4becf40f06
5 changed files with 19 additions and 100 deletions

View file

@ -6,24 +6,27 @@
class MergeSorter {
private:
std::vector<Record> buffer_;
const std::string& tmp_dir_;
size_t buffer_rows_ = 0;
size_t disk_reads_ = 0;
size_t disk_writes_ = 0;
size_t phases_ = 0;
std::vector<Record> buffer_;
const std::string &tmp_dir_;
size_t buffer_rows_ = 0;
size_t disk_reads_ = 0;
size_t disk_writes_ = 0;
size_t phases_ = 0;
std::span<Record> get_chunk_span(size_t chunk_index);
size_t create_initial_runs(const std::string& input_file, const std::string& next_dir);
size_t merge_pass(const std::string& current_dir, const std::string& next_dir, size_t run_count);
void perform_k_way_merge(std::vector<std::unique_ptr<FileReader>>& readers,
FileWriter& writer);
std::span<Record> get_chunk_span(size_t chunk_index);
size_t create_initial_runs(const std::string &input_file,
const std::string &next_dir);
size_t merge_pass(const std::string &current_dir, const std::string &next_dir,
size_t run_count);
void perform_k_way_merge(std::vector<std::unique_ptr<FileReader>> &readers,
FileWriter &writer);
public:
MergeSorter(size_t buffer_rows, size_t buffer_cols, const std::string& tmp_dir);
void sort_file(const std::string& input_file, const std::string& output_file);
MergeSorter(size_t buffer_rows, size_t buffer_cols,
const std::string &tmp_dir);
void sort_file(const std::string &input_file, const std::string &output_file);
size_t disk_reads();
size_t disk_writes();
size_t phases();
size_t disk_reads();
size_t disk_writes();
size_t phases();
};