little statement_cache test changes

This commit is contained in:
Sascha Kühl
2025-08-12 16:30:45 +02:00
parent 6ac3f80887
commit a32330ef5b
4 changed files with 36 additions and 19 deletions
+23 -8
View File
@@ -38,20 +38,33 @@ public:
}
double get_average_lock_wait_time() const {
std::chrono::milliseconds get_average_lock_wait_time() const {
std::lock_guard lock(mutex_);
if (lock_failure_count_ == 0) {
return 0.0;
return std::chrono::milliseconds{0};
}
return std::chrono::duration<double>(total_lock_wait_time_).count() / lock_failure_count_;
const auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(total_lock_wait_time_);
return std::chrono::milliseconds(millis.count() / lock_failure_count_);
}
double get_average_execution_time() const {
std::chrono::milliseconds get_average_execution_time() const {
std::lock_guard lock(mutex_);
if (execution_count_ == 0) {
return 0.0;
return std::chrono::milliseconds{0};
}
return std::chrono::duration<double>(total_execution_time_).count() / execution_count_;
const auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(total_execution_time_);
return std::chrono::milliseconds(millis.count() / execution_count_);
}
std::chrono::milliseconds get_total_lock_wait_time() const {
std::lock_guard lock(mutex_);
return std::chrono::duration_cast<std::chrono::milliseconds>(total_lock_wait_time_);
}
std::chrono::milliseconds get_total_execution_time() const {
std::lock_guard lock(mutex_);
return std::chrono::duration_cast<std::chrono::milliseconds>(total_execution_time_);
}
size_t get_lock_failure_count() const {
@@ -266,8 +279,10 @@ TEST_CASE("Multithreaded stress test", "[statement][cache][stress]") {
std::cout << "[Performance] Executed " << (thread_count * iterations) << " statements in " << duration.count() << " ms (lock failed: " << lock_failed_count << ", execute failed: " << exec_failed_count << ")\n";
std::cout << "Average lock wait time: " << metrics.get_average_lock_wait_time() << "s\n";
std::cout << "Average execution time: " << metrics.get_average_execution_time() << "s\n";
std::cout << "Average lock wait time: " << metrics.get_average_lock_wait_time().count() << "ms\n";
std::cout << "Total lock wait time: " << metrics.get_total_lock_wait_time().count() << "ms\n";
std::cout << "Average execution time: " << metrics.get_average_execution_time().count() << "ms\n";
std::cout << "Total execution time: " << metrics.get_total_execution_time().count() << "ms\n";
std::cout << "Number of lock failures: " << metrics.get_lock_failure_count() << "\n";
// Some events should be generated