Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_benchmark.hpp
Go to the documentation of this file.
1/**
2 * @file chunk_benchmark.hpp
3 * @brief Performance benchmarking tools for chunk processing
4 * @author Jonathan Reich
5 * @date 2024-12-07
6 */
7
8#pragma once
9
10#include "chunk_common.hpp"
11#include "chunk_strategies.hpp"
12#include <chrono>
13#include <string>
14#include <vector>
15
16namespace chunk_benchmark {
17
24
25template <typename T>
27private:
28 std::vector<T> test_data;
29 std::vector<std::shared_ptr<chunk_processing::ChunkStrategy<T>>> strategies;
30 size_t iterations;
31
32public:
33 explicit ChunkBenchmark(const std::vector<T>& data, size_t num_iterations = 100)
34 : test_data(data), iterations(num_iterations) {}
35
36 void add_strategy(std::shared_ptr<chunk_processing::ChunkStrategy<T>> strategy) {
37 strategies.push_back(strategy);
38 }
39
40 std::vector<BenchmarkResult> benchmark_chunking() {
41 std::vector<BenchmarkResult> results;
42 for (const auto& strategy : strategies) {
43 auto start = std::chrono::high_resolution_clock::now();
44
45 size_t total_chunks = 0;
46 for (size_t i = 0; i < iterations; ++i) {
47 auto chunks = strategy->apply(test_data);
48 total_chunks += chunks.size();
49 }
50
51 auto end = std::chrono::high_resolution_clock::now();
52 auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
53
54 results.push_back({static_cast<double>(duration.count()), sizeof(T) * test_data.size(),
55 total_chunks / iterations, "Strategy"});
56 }
57 return results;
58 }
59
60 void save_results(const std::string& filename) const {
61 // Implementation for saving results to file
62 }
63};
64
65} // namespace chunk_benchmark
Defines various strategies for chunking data based on different criteria.
std::vector< BenchmarkResult > benchmark_chunking()
std::vector< std::shared_ptr< chunk_processing::ChunkStrategy< T > > > strategies
void add_strategy(std::shared_ptr< chunk_processing::ChunkStrategy< T > > strategy)
void save_results(const std::string &filename) const
ChunkBenchmark(const std::vector< T > &data, size_t num_iterations=100)