@@ -1439,9 +1439,16 @@ class Fixture : public internal::Benchmark {
1439
1439
n) [[maybe_unused]]
1440
1440
1441
1441
#ifdef CODSPEED_ENABLED
1442
+ #include < codspeed.h>
1443
+
1442
1444
#include < filesystem>
1445
+
1443
1446
#define CUR_FILE \
1444
1447
std::filesystem::relative (__FILE__, CODSPEED_GIT_ROOT_DIR).string() + "::"
1448
+ #define NAMESPACE \
1449
+ (([]() { return extract_lambda_namespace (__PRETTY_FUNCTION__); })())
1450
+
1451
+ #define FILE_AND_NAMESPACE CUR_FILE + NAMESPACE
1445
1452
1446
1453
// Transforms `BM_Foo<int, double>` into `BM_Foo[int, double]`.
1447
1454
#define TYPE_START " ["
@@ -1454,7 +1461,7 @@ class Fixture : public internal::Benchmark {
1454
1461
// Extra space after the comma for readability
1455
1462
#define COMMA " , "
1456
1463
#else
1457
- #define CUR_FILE std::string ()
1464
+ #define FILE_AND_NAMESPACE std::string ()
1458
1465
1459
1466
#define TYPE_START " <"
1460
1467
#define TYPE_END " >"
@@ -1469,7 +1476,7 @@ class Fixture : public internal::Benchmark {
1469
1476
BENCHMARK_PRIVATE_DECLARE (_benchmark_) = \
1470
1477
(::benchmark::internal::RegisterBenchmarkInternal( \
1471
1478
std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1472
- CUR_FILE + #__VA_ARGS__, __VA_ARGS__)))
1479
+ FILE_AND_NAMESPACE + #__VA_ARGS__, __VA_ARGS__)))
1473
1480
1474
1481
// Old-style macros
1475
1482
#define BENCHMARK_WITH_ARG (n, a ) BENCHMARK(n)->Arg ((a))
@@ -1490,11 +1497,11 @@ class Fixture : public internal::Benchmark {
1490
1497
// }
1491
1498
// /* Registers a benchmark named "BM_takes_args/int_string_test` */
1492
1499
// BENCHMARK_CAPTURE(BM_takes_args, int_string_test, 42, std::string("abc"));
1493
- #define BENCHMARK_CAPTURE (func, test_case_name, ...) \
1494
- BENCHMARK_PRIVATE_DECLARE (_benchmark_) = \
1495
- (::benchmark::internal::RegisterBenchmarkInternal( \
1496
- std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1497
- CUR_FILE + #func NAME_START #test_case_name NAME_END, \
1500
+ #define BENCHMARK_CAPTURE (func, test_case_name, ...) \
1501
+ BENCHMARK_PRIVATE_DECLARE (_benchmark_) = \
1502
+ (::benchmark::internal::RegisterBenchmarkInternal( \
1503
+ std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1504
+ FILE_AND_NAMESPACE + #func NAME_START #test_case_name NAME_END, \
1498
1505
[](::benchmark::State& st) { func (st, __VA_ARGS__); })))
1499
1506
1500
1507
// This will register a benchmark for a templatized function. For example:
@@ -1509,19 +1516,20 @@ class Fixture : public internal::Benchmark {
1509
1516
BENCHMARK_PRIVATE_DECLARE (n) = \
1510
1517
(::benchmark::internal::RegisterBenchmarkInternal( \
1511
1518
std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1512
- CUR_FILE + #n TYPE_START #a TYPE_END, n<a>)))
1513
-
1514
- #define BENCHMARK_TEMPLATE2 (n, a, b ) \
1515
- BENCHMARK_PRIVATE_DECLARE (n) = \
1516
- (::benchmark::internal::RegisterBenchmarkInternal( \
1517
- std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1518
- CUR_FILE + #n TYPE_START #a COMMA #b TYPE_END, n<a, b>)))
1519
-
1520
- #define BENCHMARK_TEMPLATE (n, ...) \
1521
- BENCHMARK_PRIVATE_DECLARE (n) = \
1522
- (::benchmark::internal::RegisterBenchmarkInternal( \
1523
- std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1524
- CUR_FILE + #n TYPE_START #__VA_ARGS__ TYPE_END, \
1519
+ FILE_AND_NAMESPACE + #n TYPE_START #a TYPE_END, n<a>)))
1520
+
1521
+ #define BENCHMARK_TEMPLATE2 (n, a, b ) \
1522
+ BENCHMARK_PRIVATE_DECLARE (n) = \
1523
+ (::benchmark::internal::RegisterBenchmarkInternal( \
1524
+ std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1525
+ FILE_AND_NAMESPACE + #n TYPE_START #a COMMA #b TYPE_END, \
1526
+ n<a, b>)))
1527
+
1528
+ #define BENCHMARK_TEMPLATE (n, ...) \
1529
+ BENCHMARK_PRIVATE_DECLARE (n) = \
1530
+ (::benchmark::internal::RegisterBenchmarkInternal( \
1531
+ std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1532
+ FILE_AND_NAMESPACE + #n TYPE_START #__VA_ARGS__ TYPE_END, \
1525
1533
n<__VA_ARGS__>)))
1526
1534
1527
1535
// This will register a benchmark for a templatized function,
@@ -1544,7 +1552,8 @@ class Fixture : public internal::Benchmark {
1544
1552
BENCHMARK_PRIVATE_DECLARE (_benchmark_) = \
1545
1553
(::benchmark::internal::RegisterBenchmarkInternal( \
1546
1554
std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1547
- CUR_FILE + #func_name NAME_START #test_case_name NAME_END, \
1555
+ FILE_AND_NAMESPACE + \
1556
+ #func_name NAME_START #test_case_name NAME_END, \
1548
1557
[](::benchmark::State& st) { func (st, __VA_ARGS__); })))
1549
1558
1550
1559
#define BENCHMARK_TEMPLATE1_CAPTURE (func, a, test_case_name, ...) \
@@ -1555,11 +1564,12 @@ class Fixture : public internal::Benchmark {
1555
1564
#endif
1556
1565
1557
1566
#ifdef CODSPEED_ENABLED
1558
- #define BENCHMARK_TEMPLATE2_CAPTURE (func, a, b, test_case_name, ...) \
1559
- BENCHMARK_PRIVATE_DECLARE (func) = \
1560
- (::benchmark::internal::RegisterBenchmarkInternal( \
1561
- std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1562
- CUR_FILE + #func " [" #test_case_name COMMA #a COMMA #b " ]" , \
1567
+ #define BENCHMARK_TEMPLATE2_CAPTURE (func, a, b, test_case_name, ...) \
1568
+ BENCHMARK_PRIVATE_DECLARE (func) = \
1569
+ (::benchmark::internal::RegisterBenchmarkInternal( \
1570
+ std::make_unique<::benchmark::internal::FunctionBenchmark>( \
1571
+ FILE_AND_NAMESPACE + #func " [" #test_case_name COMMA #a COMMA #b \
1572
+ " ]" , \
1563
1573
[](::benchmark::State& st) { func<a, b>(st, __VA_ARGS__); })))
1564
1574
#else
1565
1575
#define BENCHMARK_TEMPLATE2_CAPTURE (func, a, b, test_case_name, ...) \
0 commit comments