|
@@ -4,24 +4,25 @@
|
|
|
#include "core/utils/Clock.hpp"
|
|
|
#include "core/utils/Random.hpp"
|
|
|
|
|
|
-using Millis = Core::Clock::Nanos;
|
|
|
+using Nanos = Core::Clock::Nanos;
|
|
|
+namespace Logger = Core::Logger;
|
|
|
|
|
|
struct Timer {
|
|
|
- Core::Clock::Nanos nanos;
|
|
|
+ Nanos nanos;
|
|
|
|
|
|
Timer() : nanos(0) {
|
|
|
CORE_TEST_ERROR(Core::Clock::getNanos(nanos));
|
|
|
}
|
|
|
|
|
|
- Core::Clock::Nanos get() const {
|
|
|
- Core::Clock::Nanos nanos2 = 0;
|
|
|
+ Nanos get() const {
|
|
|
+ Nanos nanos2 = 0;
|
|
|
CORE_TEST_ERROR(Core::Clock::getNanos(nanos2));
|
|
|
return nanos2 - nanos;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
template<typename Map>
|
|
|
-static Core::Clock::Nanos testSearch(const Map& m) {
|
|
|
+static Nanos testSearch(const Map& m) {
|
|
|
Timer t;
|
|
|
volatile int sum = 0;
|
|
|
for(int i = 0; i < 10000; i++) {
|
|
@@ -36,7 +37,7 @@ static Core::Clock::Nanos testSearch(const Map& m) {
|
|
|
}
|
|
|
|
|
|
template<typename Map>
|
|
|
-static Core::Clock::Nanos testEmptySearch(const Map& m) {
|
|
|
+static Nanos testEmptySearch(const Map& m) {
|
|
|
Timer t;
|
|
|
volatile int sum = 0;
|
|
|
for(int i = 0; i < 100'000'000; i++) {
|
|
@@ -65,12 +66,12 @@ static void fillChaos(Map& m) {
|
|
|
}
|
|
|
|
|
|
template<typename Map>
|
|
|
-static Millis average(Map& m, Core::Clock::Nanos (*f)(const Map&), int n) {
|
|
|
- Core::Clock::Nanos sum = 0;
|
|
|
+static int average(Map& m, Nanos (*f)(const Map&), int n) {
|
|
|
+ Nanos sum = 0;
|
|
|
for(int i = 0; i < n; i++) {
|
|
|
sum += f(m);
|
|
|
}
|
|
|
- return sum / (n * 1'000'000);
|
|
|
+ return static_cast<int>(sum / (n * 1'000'000));
|
|
|
}
|
|
|
|
|
|
static void order(int n) {
|
|
@@ -78,11 +79,12 @@ static void order(int n) {
|
|
|
Core::ProbingHashMap<int, int> m2;
|
|
|
fillOrder(m);
|
|
|
fillOrder(m2);
|
|
|
- CORE_LOG_INFO("Order Chaining | Order Probing");
|
|
|
- CORE_LOG_INFO("Search | # ms | # ms", average(m, testSearch, n),
|
|
|
- average(m2, testSearch, n));
|
|
|
- CORE_LOG_INFO("EmptySearch | # ms | # ms", average(m, testEmptySearch, n),
|
|
|
- average(m2, testEmptySearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Order Chaining | Order Probing");
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Search | # ms | # ms",
|
|
|
+ average(m, testSearch, n), average(m2, testSearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "EmptySearch | # ms | # ms",
|
|
|
+ average(m, testEmptySearch, n),
|
|
|
+ average(m2, testEmptySearch, n));
|
|
|
}
|
|
|
|
|
|
static void chaos(int n) {
|
|
@@ -90,11 +92,12 @@ static void chaos(int n) {
|
|
|
Core::ProbingHashMap<int, int> m2;
|
|
|
fillChaos(m);
|
|
|
fillChaos(m2);
|
|
|
- CORE_LOG_INFO("Chaos Chaining | Chaos Probing");
|
|
|
- CORE_LOG_INFO("Search | # ms | # ms", average(m, testSearch, n),
|
|
|
- average(m2, testSearch, n));
|
|
|
- CORE_LOG_INFO("EmptySearch | # ms | # ms", average(m, testEmptySearch, n),
|
|
|
- average(m2, testEmptySearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Chaos Chaining | Chaos Probing");
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Search | # ms | # ms",
|
|
|
+ average(m, testSearch, n), average(m2, testSearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "EmptySearch | # ms | # ms",
|
|
|
+ average(m, testEmptySearch, n),
|
|
|
+ average(m2, testEmptySearch, n));
|
|
|
}
|
|
|
|
|
|
static void testProbing(int n) {
|
|
@@ -102,11 +105,12 @@ static void testProbing(int n) {
|
|
|
Core::ProbingHashMap<int, int> m2;
|
|
|
fillOrder(m);
|
|
|
fillChaos(m2);
|
|
|
- CORE_LOG_INFO("Order | Chaos");
|
|
|
- CORE_LOG_INFO("Search | # ms | # ms", average(m, testSearch, n),
|
|
|
- average(m2, testSearch, n));
|
|
|
- CORE_LOG_INFO("EmptySearch | # ms | # ms", average(m, testEmptySearch, n),
|
|
|
- average(m2, testEmptySearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Order | Chaos");
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "Search | # ms | # ms",
|
|
|
+ average(m, testSearch, n), average(m2, testSearch, n));
|
|
|
+ Logger::log(Logger::COLOR_GRAY, "EmptySearch | # ms | # ms",
|
|
|
+ average(m, testEmptySearch, n),
|
|
|
+ average(m2, testEmptySearch, n));
|
|
|
}
|
|
|
|
|
|
int main() {
|