A repository housing targeted investigations and performance analyses of various .NET development approaches, offering developers insights into optimization techniques and architectural decisions.
Explore the docs (Work in progress)»
View Documentation (Work in Progress)
·
Report Bug
·
Request Feature
Table of Contents
Benchmarks Table of Contents
- Enum boxing-unboxing benchmarks
- Comparison Length check methods of collections
- Comparing GroupBy/Distinct/DistinctBy for getting unique items
- Comparing different iterators (for,foreach, linq, ref foreach, etc.)
- Comparing different string link formatting, dashing for dash view, concatenating and generating unique string
- Json Serialization/Deserialization
- Binary Serialization/Deserialization
- Sort array of T by ids from string array
- [WIP] String Manipulations
- URL Concat and Query building
A curated collection of in-depth studies exploring various .NET development approaches, focusing on performance optimization and best practices. This repository houses detailed investigations into different techniques, architectural patterns, and implementation strategies within the .NET ecosystem. Each analysis aims to provide developers with valuable insights to enhance application efficiency and make informed decisions when designing .NET solutions.
Welcome to the Curious Benchmarks! This repository is designed to help you explore and understand performance characteristics of various .NET approaches. Follow these steps to get started:
- Install .NET SDK (version 8.0 or later)
- Install BenchmarkDotNet (Included in the project)
-
Clone the Repository
git clone https://github.com/antomys/CuriousBenchmarks.git cd .\src\main
-
Build the Solution
dotnet build
-
Run Benchmarks. Navigate to a specific benchmark project and run:
dotnet run -c Release
-
Interpret Results
- Benchmark results will be displayed in the console;
- Detailed reports are generated in the
BenchmarkDotNet.Artifacts
folder.
-
Explore and Contribute
- Check out different benchmark projects in the repository
- Feel free to add your own benchmarks or improve existing ones
- Submit pull requests for any enhancements or new investigations
Happy benchmarking! If you have any questions or suggestions, please open an issue in the repository.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Ihor Volokhovych - @incomingwebhook - igorvolokhovych@gmail.com
Project Link: https://github.com/antomys/CuriousBenchmarks
- Volodymyr Lyshenko
- Volodymyr has been instrumental in expanding the scope of our performance analyses by proposing numerous innovative and insightful benchmark scenarios. His suggestions have led to the inclusion of several new benchmarks that explore previously unexamined aspects of .NET performance.
- Through creative input, Volodymyr has helped broaden the range of .NET approaches and techniques covered in this repository, making it a more comprehensive resource for the developer community.
- pro.net Telegram chat
- The members of pro.net Telegram chat have provided thorough reviews of benchmarks, offering critical insights that have significantly improved the quality and reliability of performance analyses.
- Their innovative suggestions have led to the inclusion of new benchmark scenarios and the refinement of existing ones, broadening the scope and relevance of our investigations.
- On numerous occasions, pro.net Telegram chat experts have shared their deep knowledge of .NET internals, helping us understand and explain complex performance behaviors observed in our benchmarks.