|
11 | 11 | // Custom Qt message handler to filter debug output during benchmarks |
12 | 12 | static bool g_verbose = false; |
13 | 13 |
|
| 14 | +namespace { |
| 15 | + |
| 16 | +bool hasCliFlag(int argc, char* argv[], const char* flag) { |
| 17 | + for (int i = 1; i < argc; ++i) { |
| 18 | + if (std::string(argv[i]) == flag) { |
| 19 | + return true; |
| 20 | + } |
| 21 | + } |
| 22 | + return false; |
| 23 | +} |
| 24 | + |
| 25 | +bool shouldPrintBenchmarkPreamble(int argc, char* argv[]) { |
| 26 | + return !hasCliFlag(argc, argv, "--help") |
| 27 | + && !hasCliFlag(argc, argv, "-?") |
| 28 | + && !hasCliFlag(argc, argv, "--list-tests") |
| 29 | + && !hasCliFlag(argc, argv, "--list-tags") |
| 30 | + && !hasCliFlag(argc, argv, "--list-reporters") |
| 31 | + && !hasCliFlag(argc, argv, "--list-listeners"); |
| 32 | +} |
| 33 | + |
| 34 | +} // namespace |
| 35 | + |
14 | 36 | void benchmarkMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) { |
15 | 37 | // In non-verbose mode, only show warnings and above |
16 | 38 | if (!g_verbose) { |
@@ -72,31 +94,38 @@ int main(int argc, char* argv[]) { |
72 | 94 | return returnCode; |
73 | 95 | } |
74 | 96 |
|
75 | | - std::cout << "=================================\n"; |
76 | | - std::cout << " DSR Benchmarking Suite\n"; |
77 | | - std::cout << "=================================\n\n"; |
78 | | - std::cout << "Available benchmark categories:\n"; |
79 | | - std::cout << " [BASELINE] - Curated low-noise regression baseline\n"; |
80 | | - std::cout << " [EXTENDED] - Slower supplementary baseline coverage\n"; |
81 | | - std::cout << " [LATENCY] - Signal emission, CRDT operations\n"; |
82 | | - std::cout << " [THROUGHPUT] - Single agent insert/read/update/delete, concurrent writers\n"; |
83 | | - std::cout << " [CRDT] - mvreg and dot_context micro-benchmarks\n"; |
84 | | - std::cout << " [SCALABILITY] - Thread scaling, graph size impact\n"; |
85 | | - std::cout << " [CONSISTENCY] - Convergence time, conflict rates\n"; |
86 | | - std::cout << "\n"; |
87 | | - std::cout << "Usage examples:\n"; |
88 | | - std::cout << " ./dsr_benchmarks # Run all non-hidden benchmarks\n"; |
89 | | - std::cout << " ./dsr_benchmarks \"[BASELINE]\" # Run curated baseline benchmarks\n"; |
90 | | - std::cout << " ./dsr_benchmarks \"[EXTENDED]\" # Run slower supplementary coverage\n"; |
91 | | - std::cout << " ./dsr_benchmarks \"[LATENCY]\" # Run latency benchmarks\n"; |
92 | | - std::cout << " ./dsr_benchmarks \"[THROUGHPUT]\" # Run throughput benchmarks\n"; |
93 | | - std::cout << " ./dsr_benchmarks \"[CRDT]\" # Run CRDT micro-benchmarks\n"; |
94 | | - std::cout << " ./dsr_benchmarks \"[.multi]\" # Run multi-agent tests (may timeout)\n"; |
95 | | - std::cout << " ./dsr_benchmarks -r json::out=x.json # Export to JSON\n"; |
96 | | - std::cout << " ./dsr_benchmarks --verbose # Show Qt debug messages\n"; |
97 | | - std::cout << "\n"; |
98 | | - std::cout << "Note: [.multi] and [.extended] tests are hidden by default.\n"; |
99 | | - std::cout << "\n"; |
| 97 | + if (shouldPrintBenchmarkPreamble(argc, argv)) { |
| 98 | + std::cout << "=================================\n"; |
| 99 | + std::cout << " DSR Benchmarking Suite\n"; |
| 100 | + std::cout << "=================================\n\n"; |
| 101 | + std::cout << "Available benchmark categories:\n"; |
| 102 | + std::cout << " [BASELINE] - Curated low-noise regression baseline\n"; |
| 103 | + std::cout << " [EXTENDED] - Slower supplementary baseline coverage\n"; |
| 104 | + std::cout << " [LATENCY] - Signal emission, CRDT operations\n"; |
| 105 | + std::cout << " [THROUGHPUT] - Single agent insert/read/update/delete, concurrent writers\n"; |
| 106 | + std::cout << " [CRDT] - mvreg and dot_context micro-benchmarks\n"; |
| 107 | + std::cout << " [SCALABILITY] - Thread scaling, graph size impact\n"; |
| 108 | + std::cout << " [CONSISTENCY] - Convergence time, conflict rates\n"; |
| 109 | + std::cout << " [PROFILE] - Expensive profiling-focused cases\n"; |
| 110 | + std::cout << " [LOAD] - Work-under-load and concurrency-heavy cases\n"; |
| 111 | + std::cout << " [MULTIAGENT] - Multi-agent synchronization/consistency cases\n"; |
| 112 | + std::cout << "\n"; |
| 113 | + std::cout << "Usage examples:\n"; |
| 114 | + std::cout << " ./dsr_benchmarks # Run all non-hidden benchmarks\n"; |
| 115 | + std::cout << " ./dsr_benchmarks \"[BASELINE]\" # Run curated baseline benchmarks\n"; |
| 116 | + std::cout << " ./dsr_benchmarks \"[EXTENDED]\" # Run slower supplementary coverage\n"; |
| 117 | + std::cout << " ./dsr_benchmarks \"[LATENCY]\" # Run latency benchmarks\n"; |
| 118 | + std::cout << " ./dsr_benchmarks \"[THROUGHPUT]\" # Run throughput benchmarks\n"; |
| 119 | + std::cout << " ./dsr_benchmarks \"[CRDT]\" # Run CRDT micro-benchmarks\n"; |
| 120 | + std::cout << " ./dsr_benchmarks \"[PROFILE][LOAD]\" # Run long load-heavy cases\n"; |
| 121 | + std::cout << " ./dsr_benchmarks \"[PROFILE][MULTIAGENT]\" # Run multi-agent profiling cases\n"; |
| 122 | + std::cout << " ./dsr_benchmarks \"[.multi]\" # Run multi-agent tests (may timeout)\n"; |
| 123 | + std::cout << " ./dsr_benchmarks -r json::out=x.json # Export to JSON\n"; |
| 124 | + std::cout << " ./dsr_benchmarks --verbose # Show Qt debug messages\n"; |
| 125 | + std::cout << "\n"; |
| 126 | + std::cout << "Note: [.multi] and [.extended] tests are hidden by default.\n"; |
| 127 | + std::cout << "\n"; |
| 128 | + } |
100 | 129 |
|
101 | 130 | return session.run(); |
102 | 131 | } |
0 commit comments