This is a C++ test task by Deltix Inc.
Having a high-end multicore x86-64 machine actively running nothing but your application, You need to find the most efficient way (from the latency minimization perspective) to transfer simple data items (unsigned 32-bit integers) from one thread to another.
This repository consists of three main parts:
AbstractTransport
- abstract class for a component capable to transfer data between two threads. We also provide a simple default implementationDefaultTransport
.AbstractProfiler
- abstract class for a component capable to measure latency of different transport implementations.Application
- a simple benchmark runner, that performs data transmissions viaAbstractTransport
and calculates statistics usingAbstractProfiler
.
- Develop latency testing metodology and write it to
YourProfiler
implementation ofAbstractProfiler
class. - Write
YourTransport
implementation ofAbstractTransport
. Your class must outperform our simple implementationDefaultTransport
at least on measurements made byYourProfiler
. - Send us a link to a GitHub repository with your implementations.
- You should not use any kind of message broker framework or profiling toolkit, instead you should implement this logic by yourself.
- Your are allowed but not obligated to use synchronization primitives, collections and utility classes from any commonly used C++ libraries (STL, POSIX Threads, Qt, Boost).
- From the other hand, we should be able to build your solution out-of-the-box using Make and Clang on CentOS 7 machine with nothing but compiler and standard headers installed.