forked from brprojects/Limit-Order-Book
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.cpp
More file actions
29 lines (23 loc) · 1.09 KB
/
Copy pathmain.cpp
File metadata and controls
29 lines (23 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "./Generate_Orders/GenerateOrders.hpp"
#include "./Limit_Order_Book/Book.hpp"
#include <iostream>
#include <chrono>
int main() {
Book* book = new Book();
GenerateOrders generateOrders(book);
generateOrders.createInitialOrders(10000, 300);
constexpr int numOrders = 5000000;
auto start = std::chrono::high_resolution_clock::now();
generateOrders.createOrders(numOrders);
auto stop = std::chrono::high_resolution_clock::now();
auto durationMs = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
auto durationNs = std::chrono::duration_cast<std::chrono::nanoseconds>(stop - start);
double tps = numOrders * 1e9 / durationNs.count();
double avgLatencyNs = durationNs.count() / static_cast<double>(numOrders);
std::cout << "Orders: " << numOrders << std::endl;
std::cout << "Time: " << durationMs.count() << " ms" << std::endl;
std::cout << "TPS: " << static_cast<long>(tps) << " orders/sec" << std::endl;
std::cout << "Avg latency: " << static_cast<long>(avgLatencyNs) << " ns/order" << std::endl;
delete book;
return 0;
}