{"id":15047572,"url":"https://github.com/twilight-dream-of-magic/museair-cpp","last_synced_at":"2025-04-10T00:51:21.089Z","repository":{"id":253281013,"uuid":"842993609","full_name":"Twilight-Dream-Of-Magic/museair-cpp","owner":"Twilight-Dream-Of-Magic","description":"A high-performance, non-cryptographic hashing algorithm written in C++. MuseAir offers fast, efficient hashing optimized for large datasets, with competitive performance compared to other popular algorithms like WyHash and RapidHash. Cross-platform support with thorough benchmarking.","archived":false,"fork":false,"pushed_at":"2024-08-18T15:17:49.000Z","size":534,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T00:51:15.422Z","etag":null,"topics":["cpp","cpp17","cross-platform","hash","hashing-algorithm","high-performance-computing","high-speed","komihash","museair","non-cryptographic-hash","rapidhash","smhasher3","wyhash"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Twilight-Dream-Of-Magic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T14:50:49.000Z","updated_at":"2024-11-21T10:57:40.000Z","dependencies_parsed_at":"2024-08-15T18:25:57.031Z","dependency_job_id":"026fa472-5343-47f7-b368-f6141a52e26e","html_url":"https://github.com/Twilight-Dream-Of-Magic/museair-cpp","commit_stats":null,"previous_names":["twilight-dream-of-magic/museair-cpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Twilight-Dream-Of-Magic%2Fmuseair-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Twilight-Dream-Of-Magic%2Fmuseair-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Twilight-Dream-Of-Magic%2Fmuseair-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Twilight-Dream-Of-Magic%2Fmuseair-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Twilight-Dream-Of-Magic","download_url":"https://codeload.github.com/Twilight-Dream-Of-Magic/museair-cpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137997,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp17","cross-platform","hash","hashing-algorithm","high-performance-computing","high-speed","komihash","museair","non-cryptographic-hash","rapidhash","smhasher3","wyhash"],"created_at":"2024-09-24T21:00:28.025Z","updated_at":"2025-04-10T00:51:21.070Z","avatar_url":"https://github.com/Twilight-Dream-Of-Magic.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MuseAir C++ Implementation: A Fast Non-Cryptographic Hashing Algorithm\r\n\r\n[![License](https://img.shields.io/badge/license-GNU-blue.svg)](LICENSE)  \r\n[![Build Status](https://img.shields.io/github/actions/workflow/status/Twilight-Dream-Of-Magic/museair-cpp/CI.yml?branch=main)](https://github.com/Twilight-Dream-Of-Magic/museair-cpp/actions)  \r\n[![Contributors](https://img.shields.io/github/contributors/Twilight-Dream-Of-Magic/museair-cpp)](https://github.com/Twilight-Dream-Of-Magic/museair-cpp/graphs/contributors)\r\n\r\n### Introduction\r\n\r\nWelcome to the C++ world of MuseAir! This repository showcases a C++ adaptation of the MuseAir hashing algorithm, a brainchild originally conceived by [eternal-io](https://github.com/eternal-io/museair). The algorithm was initially developed in Rust, but to broaden its reach, we've translated it into C++—a more widely used language, especially in performance-critical applications.\r\n\r\nMuseAir isn't just any hashing algorithm; it’s optimized for high-speed, non-cryptographic hashing. It's particularly good at what it does—resisting vulnerabilities like blinding multiplication, and we’ve taken care to maintain these strengths in the C++ version.\r\n\r\n### Key Features\r\n- **High-Performance Hashing:** MuseAir holds its own against other speedy hashes like WyHash, and our C++ version retains that rapidity.\r\n- **Versatile Output:** Whether you need 64-bit or 128-bit hash outputs, MuseAir has you covered, with minimal performance overhead.\r\n- **Platform-Specific Tweaks:** We’ve made sure to include optimizations for different platforms, leveraging SIMD instructions where possible. The C++17 template parameters also let you fine-tune the hashing process to your liking.\r\n\r\n### What’s in This Repository?\r\n\r\nThis repository doesn’t just bring you the code—it brings the possibility of using MuseAir in your C++ projects. We’ve ensured that this implementation is as seamless as possible, aiming for a header-only design with a few critical paths handled by platform-specific assembly. \r\n\r\n**Minimum Requirements:**\r\n- **C++ Standard:** You’ll need at least C++17.\r\n- **Build System:** We use CMake (version 3.10 or later) to streamline the build process.\r\n\r\n### How to Build and Use MuseAir\r\n\r\n1. **Clone the Repository:**  \r\n   Start by cloning the project to your local machine.\r\n\r\n2. **Navigate to the Project Directory:**  \r\n   Open up a terminal, head to the project’s location, and get ready to build.\r\n\r\n3. **Create a Build Directory:**  \r\n   ```bash\r\n   mkdir build\r\n   cd build\r\n   ```\r\n\r\n4. **Run CMake:**  \r\n   Configure the project with CMake. For Debug mode:\r\n   ```bash\r\n   cmake -DCMAKE_BUILD_TYPE=Debug ..\r\n   ```\r\n   Or for Release mode:\r\n   ```bash\r\n   cmake -DCMAKE_BUILD_TYPE=Release ..\r\n   ```\r\n\r\n5. **Build the Project:**  \r\n   Compile everything with:\r\n   ```bash\r\n   cmake --build .\r\n   ```\r\n\r\n6. **Run the Executable:**  \r\n   Once built, run `test_muse_air` to see the hashing in action.\r\n\r\n### Example Usage of MuseAir\r\n\r\nCurious about how MuseAir works? Here’s a quick example. We’ve made it easy to compute hash values with the `MuseAir` class, whether you need 64-bit or 128-bit outputs.\r\n\r\n```cpp\r\n#include \u003ciostream\u003e\r\n#include \u003ccstdint\u003e\r\n#include \"MuseAir.hpp\"\r\n\r\nvoid print_hash_64(const uint64_t\u0026 hash) {\r\n    std::cout \u003c\u003c \"64-bit hash: \" \u003c\u003c std::hex \u003c\u003c hash \u003c\u003c std::endl;\r\n}\r\n\r\nvoid print_hash_128(const uint8_t* hash) {\r\n    std::cout \u003c\u003c \"128-bit hash: \";\r\n    for (int i = 0; i \u003c 16; i++) {\r\n        std::cout \u003c\u003c std::hex \u003c\u003c static_cast\u003cint\u003e(hash[i]);\r\n    }\r\n    std::cout \u003c\u003c std::endl;\r\n}\r\n\r\nint main() {\r\n    // Example data to hash\r\n    const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};\r\n    const size_t length = sizeof(data);\r\n    uint64_t seed = 0x12345678ABCDEF;\r\n\r\n    // Buffers to store the results\r\n    uint64_t result_64;\r\n    uint8_t result_128[16];\r\n\r\n    // Instantiate the MuseAir class with BlindFast = false\r\n    MuseAir\u003cfalse\u003e hasher_slow;\r\n\r\n    // Hashing 64-bit with BlindFast = false\r\n    hasher_slow.hash\u003cfalse\u003e(data, length, seed, \u0026result_64);\r\n    std::cout \u003c\u003c \"With BlindFast = false: \";\r\n    print_hash_64(result_64);\r\n\r\n    // Hashing 128-bit with BlindFast = false\r\n    hasher_slow.hash_128\u003cfalse\u003e(data, length, seed, result_128);\r\n    std::cout \u003c\u003c \"With BlindFast = false: \";\r\n    print_hash_128(result_128);\r\n\r\n    // Instantiate the MuseAir class with BlindFast = true\r\n    MuseAir\u003ctrue\u003e hasher_fast;\r\n\r\n    // Hashing 64-bit with BlindFast = true\r\n    hasher_fast.hash\u003cfalse\u003e(data, length, seed, \u0026result_64);\r\n    std::cout \u003c\u003c \"With BlindFast = true: \";\r\n    print_hash_64(result_64);\r\n\r\n    // Hashing 128-bit with BlindFast = true\r\n    hasher_fast.hash_128\u003cfalse\u003e(data, length, seed, result_128);\r\n    std::cout \u003c\u003c \"With BlindFast = true: \";\r\n    print_hash_128(result_128);\r\n\r\n    return 0;\r\n}\r\n```\r\n\r\n### Explaining the Code\r\n\r\n- **`MuseAir` Class:** Templated with `BlindFast`, this class determines the balance between speed and accuracy during hashing. The `hash` method adapts based on this configuration, providing either a fast or a more precise hash.\r\n  \r\n- **Input Data:** We’re working with a simple byte array and a 64-bit seed, showing how even minor tweaks like seed changes can affect the output.\r\n\r\n- **Output:** Depending on whether `BlindFast` is `true` or `false`, you’ll see different hash values, showcasing the flexibility and performance of the algorithm.\r\n\r\n## Explanation of BlindFast\r\n\r\nThe BlindFast parameter is a template boolean argument in the MuseAir class that determines the balance between speed and accuracy during hash computation. When BlindFast is set to true, the algorithm is optimized for speed, potentially sacrificing some accuracy. This mode is ideal for scenarios where performance is critical, and the exact precision of the hash value is less important. Conversely, when BlindFast is set to false, the algorithm prioritizes accuracy, making it more suitable for cases where the exactness of the hash value is paramount, even if it results in a slower computation.\r\n\r\n### Benchmarks\r\n\r\nBenchmarking MuseAir in C++ reveals that it keeps up with the original Rust implementation, clocking in at up to 33.2 GiB/s for the BFast variant on modern CPUs. For the full details, check out the original [MuseAir repository](https://github.com/eternal-io/museair).\r\n\r\n### Contributing\r\n\r\nFeel like contributing? Great! Fork this repository, make your improvements, and submit a pull request. Just remember to add tests for any new features.\r\n\r\n### License\r\n\r\nThis project is under the MIT License. For more details, see the [LICENSE](LICENSE) file.\r\n\r\n### Acknowledgments\r\n\r\nSpecial thanks to [eternal-io](https://github.com/eternal-io) for creating the MuseAir algorithm. This C++ version is a third-party implementation by a friend of the original author (that's me), aimed at making MuseAir accessible to the C++ community. We welcome contributions, issue reports, and forks for your own projects.\r\n### Performance Comparison: MuseAir vs. WyHash vs. RapidHash\r\n\r\nIn this section, we pit the MuseAir hashing algorithm against two well-known competitors—WyHash and RapidHash. We ran a series of speed tests using the SMHasher3 benchmarking tool to evaluate the performance of these algorithms across various scenarios, focusing on small and bulk key speeds.\r\n\r\n![Small Key Speed Test](images/Small%20Key%20Speed%20Test%20-%20Cycles%20per%20Hash%20vs%20Key%20Size%20%5B1%2C%2031%5D-byte%20keys.png)\r\n\r\n#### Small Key Speed Test (1 to 31-byte keys)\r\n\r\n| Algorithm            | Average Cycles/Hash |\r\n|----------------------|---------------------|\r\n| **MuseAir**          | 29.92               |\r\n| **WyHash (non-strict)**  | 21.94               |\r\n| **WyHash (strict)**      | 25.13               |\r\n| **RapidHash**        | 21.63               |\r\n| **RapidHash (protected)** | 25.12               |\r\n\r\n- **Winner**: **WyHash (non-strict)** and **RapidHash** lead in this test, showing the lowest average cycles per hash for small keys, with MuseAir trailing behind.\r\n\r\n![Bulk Speed Test](images/Bulk%20Speed%20Test%20-%20GiBsec%20vs%20Alignment%20for%20wyhash%2C%20rapidhash%2C%20MuseAir%2C%20and%20MuseAir-BFast.png)\r\n\r\n#### Bulk Key Speed Test (262144-byte keys)\r\n\r\n| Algorithm            | Average Bytes/Cycle | Speed (GiB/sec) @ 3.5 GHz |\r\n|----------------------|---------------------|---------------------------|\r\n| **MuseAir**          | 10.89               | 35.49                      |\r\n| **WyHash (non-strict)**  | 10.78               | 35.15                      |\r\n| **WyHash (strict)**      | 7.41                | 24.14                      |\r\n| **RapidHash**        | 10.85               | 35.36                      |\r\n| **RapidHash (protected)** | 7.41                | 24.14                      |\r\n\r\n- **Winner**: **MuseAir** edges out the competition slightly in bulk key speed, achieving the highest bytes per cycle and GiB/sec. RapidHash is a close second, while WyHash (strict) lags significantly behind.\r\n\r\n### Analysis\r\n\r\nFrom these results, we can conclude that while MuseAir might not excel in small key hashing compared to WyHash and RapidHash, it performs exceptionally well in bulk key scenarios, which is crucial for applications that process large amounts of data. \r\n\r\nWyHash in its non-strict form is a solid performer across the board, particularly in scenarios with smaller keys. Meanwhile, RapidHash shows consistent performance, making it a versatile choice depending on the use case.\r\n\r\nMuseAir's strength lies in its balance of performance for larger datasets, making it an excellent choice for systems that prioritize throughput over minimal cycle counts on small inputs.\r\n\r\nThese results offer a clear view of the strengths and weaknesses of each algorithm, allowing developers to make informed decisions based on their specific needs.\r\n\r\n----\r\n\r\n# Chinese:\r\n\r\n### MuseAir C++ 实现：一种快速的非密码学哈希算法\r\n\r\n[![License](https://img.shields.io/badge/license-GNU-blue.svg)](LICENSE)  \r\n[![Build Status](https://img.shields.io/github/actions/workflow/status/Twilight-Dream-Of-Magic/museair-cpp/CI.yml?branch=main)](https://github.com/Twilight-Dream-Of-Magic/museair-cpp/actions)  \r\n[![Contributors](https://img.shields.io/github/contributors/Twilight-Dream-Of-Magic/museair-cpp)](https://github.com/Twilight-Dream-Of-Magic/museair-cpp/graphs/contributors)\r\n\r\n### 简介\r\n\r\n欢迎来到MuseAir的C++世界！这个仓库展示了MuseAir哈希算法的C++版本，该算法最初由[eternal-io](https://github.com/eternal-io/museair)在Rust中开发。为了扩大其应用范围，我们将其转换为C++语言，这是一种在性能关键的应用中更广泛使用的语言。\r\n\r\nMuseAir不仅仅是一个普通的哈希算法；它专为高速、非密码学哈希而优化。它在处理盲乘法等漏洞时表现优异，我们在C++版本中也保留了这些优势。\r\n\r\n### 主要特性\r\n- **高性能哈希**：MuseAir与其他快速哈希算法（如WyHash）不相上下，我们的C++版本保留了这种速度优势。\r\n- **多功能输出**：无论你需要64位还是128位哈希输出，MuseAir都能胜任，并且性能损失极小。\r\n- **平台特定优化**：我们确保在不同平台上进行优化，尽可能利用SIMD指令。C++17的模板参数还允许你根据需要微调哈希过程。\r\n\r\n### 仓库内容\r\n\r\n这个仓库不仅仅为你提供代码，还为你提供了在C++项目中使用MuseAir的可能性。我们确保该实现尽可能无缝，目标是头文件唯一的设计，少量关键路径使用平台特定的汇编代码。\r\n\r\n**最低要求：**\r\n- **C++标准**：至少需要C++17。\r\n- **构建系统**：我们使用CMake（版本3.10或更高）来简化构建过程。\r\n\r\n### 如何构建和使用MuseAir\r\n\r\n1. **克隆仓库**：  \r\n   首先将项目克隆到你的本地机器上。\r\n\r\n2. **导航到项目目录**：  \r\n   打开终端，导航到项目所在的位置，准备构建。\r\n\r\n3. **创建构建目录**：  \r\n   ```bash\r\n   mkdir build\r\n   cd build\r\n   ```\r\n\r\n4. **运行CMake**：  \r\n   使用CMake配置项目。对于Debug模式：\r\n   ```bash\r\n   cmake -DCMAKE_BUILD_TYPE=Debug ..\r\n   ```\r\n   或者Release模式：\r\n   ```bash\r\n   cmake -DCMAKE_BUILD_TYPE=Release ..\r\n   ```\r\n\r\n5. **构建项目**：  \r\n   运行以下命令进行编译：\r\n   ```bash\r\n   cmake --build .\r\n   ```\r\n\r\n6. **运行可执行文件**：  \r\n   构建完成后，运行 `test_muse_air` 查看哈希算法的表现。\r\n\r\n### MuseAir示例代码\r\n\r\n想了解MuseAir是如何工作的吗？这里有一个简单的示例。我们使得通过`MuseAir`类计算哈希值变得非常简单，无论你需要64位还是128位的输出。\r\n\r\n```cpp\r\nvoid print_hash_64(const uint64_t\u0026 hash) {\r\n    std::cout \u003c\u003c \"64位哈希值: \" \u003c\u003c std::hex \u003c\u003c hash \u003c\u003c std::endl;\r\n}\r\n\r\nvoid print_hash_128(const uint8_t* hash) {\r\n    std::cout \u003c\u003c \"128位哈希值: \";\r\n    for (int i = 0; i \u003c 16; i++) {\r\n        std::cout \u003c\u003c std::hex \u003c\u003c static_cast\u003cint\u003e(hash[i]);\r\n    }\r\n    std::cout \u003c\u003c std::endl;\r\n}\r\n\r\nint main() {\r\n    // 要进行哈希的示例数据\r\n    const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};\r\n    const size_t length = sizeof(data);\r\n    uint64_t seed = 0x12345678ABCDEF;\r\n\r\n    // 用于存储结果的缓冲区\r\n    uint64_t result_64;\r\n    uint8_t result_128[16];\r\n\r\n    // 实例化MuseAir类，BlindFast = false\r\n    MuseAir\u003cfalse\u003e hasher_slow;\r\n\r\n    // 使用BlindFast = false进行64位哈希\r\n    hasher_slow.hash\u003cfalse\u003e(data, length, seed, \u0026result_64);\r\n    std::cout \u003c\u003c \"使用BlindFast = false: \";\r\n    print_hash_64(result_64);\r\n\r\n    // 使用BlindFast = false进行128位哈希\r\n    hasher_slow.hash_128\u003cfalse\u003e(data, length, seed, result_128);\r\n    std::cout \u003c\u003c \"使用BlindFast = false: \";\r\n    print_hash_128(result_128);\r\n\r\n    // 实例化MuseAir类，BlindFast = true\r\n    MuseAir\u003ctrue\u003e hasher_fast;\r\n\r\n    // 使用BlindFast = true进行64位哈希\r\n    hasher_fast.hash\u003cfalse\u003e(data, length, seed, \u0026result_64);\r\n    std::cout \u003c\u003c \"使用BlindFast = true: \";\r\n    print_hash_64(result_64);\r\n\r\n    // 使用BlindFast = true进行128位哈希\r\n    hasher_fast.hash_128\u003cfalse\u003e(data, length, seed, result_128);\r\n    std::cout \u003c\u003c \"使用BlindFast = true: \";\r\n    print_hash_128(result_128);\r\n\r\n    return 0;\r\n}\r\n```\r\n\r\n### 代码解释\r\n\r\n- **`MuseAir` 类**：使用模板参数 `BlindFast`，该类决定哈希过程中速度与准确性之间的平衡。`hash` 方法根据这个配置进行调整，提供快速或更精确的哈希值。\r\n  \r\n- **输入数据**：我们使用了一个简单的字节数组和一个64位种子，展示了即使是微小的种子变化也会影响输出结果。\r\n\r\n- **输出**：根据 `BlindFast` 设置为 `true` 或 `false`，你会看到不同的哈希值，展示了算法的灵活性和性能。\r\n\r\n### 解释 BlindFast 参数\r\n\r\nBlindFast 参数是 MuseAir 类中的一个模板布尔参数，用于决定哈希计算时速度和准确性之间的平衡。当 BlindFast 设置为 true 时，算法优化为速度优先，可能会牺牲一些准确性。此模式适用于对性能要求较高且对哈希值的精确性要求较低的场景。相反，当 BlindFast 设置为 false 时，算法优先考虑准确性，这使其更适合对哈希值的精确性要求较高的情况，即使这会导致计算速度变慢。\r\n\r\n### 基准测试\r\n\r\nMuseAir在C++中的基准测试表明，它的性能与原始的Rust实现相当，在现代CPU上BFast变体达到了33.2 GiB/s的速度。有关算法性能的详细信息，请参阅原始的 [MuseAir 仓库](https://github.com/eternal-io/museair)。\r\n\r\n### 贡献\r\n\r\n想贡献代码？太好了！请fork此仓库，做出改进，并提交pull request。请确保为任何新功能编写测试。\r\n\r\n### 许可证\r\n\r\n本项目遵循MIT许可证。有关详细信息，请参阅 [LICENSE](LICENSE) 文件。\r\n\r\n### 致谢\r\n\r\n特别感谢 [eternal-io](https://github.com/eternal-io) 创建了MuseAir算法。这个C++版本是由原作者的朋友（也就是我）实现的第三方版本，旨在让MuseAir为C++社区所用。我们欢迎贡献、问题报告以及fork用于自己的项目。\r\n\r\n### 性能对比：MuseAir vs. WyHash vs. RapidHash\r\n\r\n在本章节中，我们将MuseAir哈希算法与两个知名的竞争对手——WyHash和RapidHash进行对比。我们使用SMHasher3基准测试工具对这些算法在各种场景下的性能进行了测试，重点关注小规模和大规模密钥的速度表现。\r\n\r\n#### 小规模密钥速度测试（1到31字节密钥）\r\n\r\n| 算法                    | 平均每次哈希所需周期数 |\r\n|------------------------|---------------------|\r\n| **MuseAir**            | 29.92               |\r\n| **WyHash (非严格版)**     | 21.94               |\r\n| **WyHash (严格版)**       | 25.13               |\r\n| **RapidHash**          | 21.63               |\r\n| **RapidHash (保护版)**   | 25.12               |\r\n\r\n- **赢家**：**WyHash (非严格版)** 和 **RapidHash** 在此测试中表现最佳，展示了对小规模密钥最低的平均每次哈希所需周期数，而MuseAir略显逊色。\r\n\r\n#### 大规模密钥速度测试（262144字节密钥）\r\n\r\n| 算法                    | 每周期处理字节数 | 在3.5 GHz下的速度 (GiB/秒) |\r\n|------------------------|-----------------|---------------------------|\r\n| **MuseAir**            | 10.89           | 35.49                      |\r\n| **WyHash (非严格版)**     | 10.78           | 35.15                      |\r\n| **WyHash (严格版)**       | 7.41            | 24.14                      |\r\n| **RapidHash**          | 10.85           | 35.36                      |\r\n| **RapidHash (保护版)**   | 7.41            | 24.14                      |\r\n\r\n- **赢家**：在大规模密钥速度测试中，**MuseAir** 稍微领先，达到了最高的每周期处理字节数和GiB/秒。RapidHash紧随其后，而WyHash（严格版）则明显落后。\r\n\r\n### 分析\r\n\r\n从这些结果中，我们可以得出结论，尽管MuseAir在小规模密钥哈希方面不如WyHash和RapidHash表现出色，但它在大规模密钥场景中表现尤为优异，这对于处理大量数据的应用至关重要。\r\n\r\nWyHash的非严格版本在各个方面表现稳定，特别是在处理较小密钥的场景中。与此同时，RapidHash展现了出色的一致性，使其成为根据不同用例选择的多功能选项。\r\n\r\nMuseAir的优势在于其在处理较大数据集时的性能平衡，使其成为优先考虑吞吐量而非对小输入进行最小周期计数的系统的绝佳选择。\r\n\r\n这些结果清晰地展现了每种算法的优点和缺点，帮助开发者根据自身的具体需求做出明智的决策。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwilight-dream-of-magic%2Fmuseair-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwilight-dream-of-magic%2Fmuseair-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwilight-dream-of-magic%2Fmuseair-cpp/lists"}