microsoft / proxy

Proxy: Next Generation Polymorphism in C++
https://wg21.link/p3086
MIT License
2.17k stars 134 forks source link

Generate benchmarking report #181

Closed mingxwa closed 3 weeks ago

mingxwa commented 3 weeks ago

Added tool report_generator to generate a benchmarking report for each CI build and upload to artifacts.

image

Benchmarking Report

MSVC on Windows Server 2022 (x64) GCC on Ubuntu 24.04 (x64) Clang on Ubuntu 24.04 (x64) Apple Clang on macOS 15 (ARM64)
Indirect invocation on small objects via proxy vs. virtual functions 🟢proxy is about 172.0% faster 🟢proxy is about 35.9% faster 🟢proxy is about 37.6% faster 🟡proxy is about 4.3% faster
Indirect invocation on large objects via proxy vs. virtual functions 🟢proxy is about 261.1% faster 🟢proxy is about 30.0% faster 🟢proxy is about 24.9% faster 🟡proxy is about 0.4% faster
Basic lifetime management for small objects with proxy vs. std::unique_ptr 🟢proxy is about 365.5% faster 🟢proxy is about 440.6% faster 🟢proxy is about 343.7% faster 🟢proxy is about 349.0% faster
Basic lifetime management for small objects with proxy vs. std::shared_ptr (without memory pool) 🟢proxy is about 524.8% faster 🟢proxy is about 501.5% faster 🟢proxy is about 387.2% faster 🟢proxy is about 485.4% faster
Basic lifetime management for small objects with proxy vs. std::shared_ptr (with memory pool) 🟢proxy is about 245.5% faster 🟢proxy is about 594.5% faster 🟢proxy is about 475.4% faster 🟢proxy is about 214.6% faster
Basic lifetime management for small objects with proxy vs. std::any 🟢proxy is about 51.4% faster 🟢proxy is about 292.6% faster 🟢proxy is about 238.5% faster 🟢proxy is about 14.5% faster
Basic lifetime management for large objects with proxy (without memory pool) vs. std::unique_ptr 🔴proxy is about 7.1% slower 🟢proxy is about 7.6% faster 🟢proxy is about 8.7% faster 🔴proxy is about 6.7% slower
Basic lifetime management for large objects with proxy (with memory pool) vs. std::unique_ptr 🟢proxy is about 96.2% faster 🟢proxy is about 111.0% faster 🟢proxy is about 145.4% faster 🟢proxy is about 94.0% faster
Basic lifetime management for large objects with proxy vs. std::shared_ptr (both without memory pool) 🟡proxy is about 2.9% faster 🟢proxy is about 14.1% faster 🟢proxy is about 21.5% faster 🟢proxy is about 13.8% faster
Basic lifetime management for large objects with proxy vs. std::shared_ptr (both with memory pool) 🟢proxy is about 7.7% faster 🟢proxy is about 10.9% faster 🟢proxy is about 6.1% faster 🟢proxy is about 53.3% faster
Basic lifetime management for large objects with proxy (without memory pool) vs. std::any 🟢proxy is about 24.5% faster 🟡proxy is about 1.8% slower 🟢proxy is about 9.6% faster 🟡proxy is about 2.3% faster
Basic lifetime management for large objects with proxy (with memory pool) vs. std::any 🟢proxy is about 163.0% faster 🟢proxy is about 92.5% faster 🟢proxy is about 147.6% faster 🟢proxy is about 112.7% faster