Skip to content

Releases: RealTimeChris/benchmarksuite

Release v1.0.1

02 Dec 07:14

Choose a tag to compare

BenchmarkSuite v1.0.0 Release Notes

Overview

This is a major release representing a complete restructuring of BenchmarkSuite with breaking changes to directory structure, naming conventions, and APIs. The library has been modernized with snake_case conventions throughout and new hardware introspection capabilities.


🚨 Breaking Changes

Directory Structure

  • Old: Include/BnchSwt/
  • New: include/bnch_swt/
  • All header includes must be updated to use lowercase directory paths

File Naming Convention

All header files renamed from PascalCase to snake_case:

  • Concepts.hppconcepts.hpp
  • Config.hppconfig.hpp
  • StringLiteral.hppstring_literal.hpp
  • FileLoader.hppfile_loader.hpp
  • Printable.hppprintable.hpp
  • DoNotOptimize.hppdo_not_optimize.hpp
  • EventCounter.hppevent_counter.hpp
  • Metrics.hppmetrics.hpp
  • RandomGenerators.hpprandom_generators.hpp
  • And all counter headers in counters/ subdirectory

API Changes

Type Aliases:

  • uint64_typesize_type (throughout string_literal and container concepts)

Function Names (snake_case convention):

  • stringLiteralFromView()string_literal_from_view()
  • countDigits()count_digits()
  • toStringLiteral()to_string_literal()
  • toLower()to_lower()

Template Parameters:

  • sizeValsize_val
  • sizeNewsize_new
  • numDigitsnum_digits
  • metricNameNewmetric_name_new
  • stageNameNewstage_name_new

Variable Names:

  • returnValuesreturn_values
  • useNonMbpsMetricuse_non_mbps_metric

Removed Files

The old PascalCase versions of all headers have been removed. The following were part of the old structure:

  • Include/BnchSwt/CacheClearer.hpp (functionality moved/renamed)
  • Include/BnchSwt/Counters/CudaEvents.hpp (replaced with cuda_perf_events.hpp)
  • Include/BnchSwt/DoNotOptimize.hpp
  • Include/BnchSwt/EventCounter.hpp
  • Include/BnchSwt/Metrics.hpp
  • Include/BnchSwt/RandomGenerators.hpp
  • include/BnchSwt/Index.hpp

✨ New Features

Hardware Introspection

  • benchmarksuite_cpu_properties.hpp: New comprehensive CPU hardware detection and properties API
  • benchmarksuite_gpu_properties.hpp: New GPU hardware detection and properties API for CUDA devices

Memory Alignment

  • aligned_const.hpp: New utilities for compile-time aligned constant data structures

CUDA Performance Counters

  • counters/cuda_perf_events.hpp: New CUDA-specific performance event counters replacing the old CudaEvents.hpp with enhanced functionality

Cache Management

  • cache_clearer.hpp: Rebuilt cache clearing functionality with improved cross-platform support (previously CacheClearer.hpp)

🔧 Improvements

Code Quality

  • Explicit Alignment: Updated from BNCH_SWT_ALIGN to BNCH_SWT_ALIGN(64) for explicit 64-byte cache line alignment
  • Standard Compliance: Changed floating_point_t concept from std::numeric_limits<>::is_iec559 to std::floating_point<> for better C++20 compliance
  • Consistent Naming: All internal variables, functions, and template parameters now follow snake_case convention

Type Safety

  • Replaced generic uint64_type with semantic size_type for container operations
  • Improved concept definitions for better type checking at compile time

📦 Package Changes

vcpkg Integration

  • Package renamed: benchmarksuitertc-benchmarksuite
  • Updated port location: vcpkg/ports/benchmarksuite/vcpkg/ports/rtc-benchmarksuite/
  • Updated git-tree hash for version 1.0.0
  • Port name in vcpkg.json updated to rtc-benchmarksuite

Repository

  • GitHub URL casing updated: BenchmarkSuitebenchmarksuite

🗑️ Infrastructure Changes

  • Removed: GitHub Actions benchmark workflow (Benchmark.yml)
    • The automated CI benchmark workflow has been deprecated in favor of local benchmarking infrastructure
    • Provides more flexible hardware access and precise performance measurement capabilities

📊 Migration Guide

Update Include Paths

// Old
#include <BnchSwt/Concepts.hpp>
#include <BnchSwt/StringLiteral.hpp>
#include <BnchSwt/Counters/LinuxPerfEvents.hpp>

// New
#include <bnch_swt/concepts.hpp>
#include <bnch_swt/string_literal.hpp>
#include <bnch_swt/counters/linux_perf_events.hpp>

Update Type Aliases

// Old
using uint64_type = uint64_t;
string_literal<N>::uint64_type index;

// New
using size_type = uint64_t;
string_literal<N>::size_type index;

Update Function Calls

// Old
auto str = toStringLiteral<42>();
auto lower = toLower('A');
auto count = countDigits(12345);

// New
auto str = to_string_literal<42>();
auto lower = to_lower('A');
auto count = count_digits(12345);

Update Template Parameters

// Old
template<uint64_t sizeVal>
class string_literal { ... };

// New
template<uint64_t size_val>
class string_literal { ... };

Update vcpkg Dependency

// Old vcpkg.json
{
  "dependencies": ["benchmarksuite"]
}

// New vcpkg.json
{
  "dependencies": ["rtc-benchmarksuite"]
}

📈 Statistics

  • Total files changed: 25
  • Files deleted: 7 (old structure)
  • Files created: 10 (new functionality + restructured)
  • Files renamed: 9 (structural reorganization)

⚠️ Compatibility Notes

This release introduces breaking changes that require code modifications:

  1. All include paths must be updated to lowercase
  2. All API function calls must use snake_case naming
  3. Template parameter names have changed
  4. Type aliases have been renamed for semantic clarity
  5. vcpkg package name has changed

Recommendation: Review all usages of BenchmarkSuite in your codebase and update according to the migration guide above.


🙏 Acknowledgments

This major restructuring modernizes BenchmarkSuite to align with contemporary C++ conventions while maintaining and extending its powerful performance measurement capabilities.

Release v1.0.0

29 Nov 07:47

Choose a tag to compare

First official release of benchmarksuite.