blob: cff5b47b24042bd7bc5c2684afc85a7fecf7fa5e [file] [log] [blame]
#include <chrono> // NOLINT
#include <filesystem> // NOLINT
#include <iostream>
#include <limits>
#include <string>
#include <utility>
#include "tlbmc/hal/shared_mem/segment_manager.h"
#include "tlbmc/hal/shared_mem/server.h"
int main() {
boost::interprocess::shared_memory_object::remove("TlbmcSharedMemory");
std::filesystem::remove(std::string{milotic_tlbmc::kShareMemInitializedFile});
std::cout << "SharedMemoryServer starts \n";
milotic_tlbmc::SharedMemoryServer::Initialize();
std::cout << "Get Sensor value: "
<< milotic_tlbmc::SharedMemoryServer::GetInstance()
.ReadSensorValue("sensor001")
.value_or(std::make_pair(
std::numeric_limits<float>::infinity(), 0))
.first
<< '\n';
std::chrono::high_resolution_clock::time_point start =
std::chrono::high_resolution_clock::now();
constexpr int kIterations = 1000'000;
for (int i = 0; i < kIterations; ++i) {
milotic_tlbmc::SharedMemoryServer::GetInstance()
.ReadSensorValue("sensor001")
.IgnoreError();
}
std::chrono::high_resolution_clock::time_point end =
std::chrono::high_resolution_clock::now();
std::cout << "latency ns of one read:"
<< static_cast<double>(
std::chrono::duration_cast<std::chrono::nanoseconds>(end -
start)
.count()) /
kIterations
<< "\n";
return 0;
}