编辑
2024-03-25
code
00
请注意,本文编写于 177 天前,最后修改于 177 天前,其中某些信息可能已经过时。

测试了三种优化级别的素数判断方案。

cpp
#include <iostream> #include <algorithm> #include <cmath> #include <catch2/catch.hpp> bool is_prime_0(int n) { for(int i = 2; i < n; ++i) { if (n % i == 0) return false; } return true; } bool is_prime_1(int n) { if (n % 2 == 0) return n == 2; int sq = floor(sqrt(n)); for (int i = sq | 1; i > 1; i -= 2) { if (n % i == 0) { return false; } } return true; } bool is_prime_2(int n) { if (n == 2 || n == 3) return true; if (n % 6 != 1 || n % 6 != 5) return false; int sq = floor(sqrt(n)); for(int i = 5;i <= sq; i += 6) { if(n % i == 0 || n % (i+2) == 0) return false; } return true; } TEST_CASE("Is Prime") { int num = 9989899; BENCHMARK("is_prime_0") { return is_prime_0(num); }; BENCHMARK("is_prime_1") { return is_prime_1(num); }; BENCHMARK("is_prime_2") { return is_prime_2(num); }; }

Benchmark 结果

benchmark name samples iterations estimated mean low mean high mean std dev low std dev high std dev ------------------------------------------------------------------------------- is_prime_0 100 1 3.11125 s 32.4578 ms 31.9605 ms 33.1967 ms 3.04949 ms 2.275 ms 4.22213 ms is_prime_1 100 7 3.374 ms 4.72644 us 4.63879 us 5.03562 us 735.203 ns 234.881 ns 1.64281 us is_prime_2 100 31531 3.1531 ms 1.27671 ns 1.15347 ns 1.70551 ns 1.04434 ns 0.334288 ns 2.36015 ns

本文作者:OhtoAi

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!