Timothée Leclaire-Fournier
3c5c9b4a97
A benchmark on a 50 objects size with false sharing mitigations gives these values (for the initArray() function): - With mitigations: 5508 microseconds - Without mitigations: 9075 microseconds
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
#include <chrono>
|
|
#include <iostream>
|
|
|
|
#include "tests.hpp"
|
|
|
|
int main() {
|
|
#ifdef _DEBUG
|
|
tests t;
|
|
t.runTests();
|
|
#endif
|
|
|
|
auto startSlow{std::chrono::high_resolution_clock::now()};
|
|
stub *ptr{};
|
|
for (size_t i{}; i < 10000; i++) {
|
|
ptr = new stub();
|
|
delete ptr;
|
|
}
|
|
auto endSlow{std::chrono::high_resolution_clock::now()};
|
|
|
|
std::cout << "Time (milliseconds) required for allocations without pool: " <<
|
|
std::chrono::duration_cast<std::chrono::milliseconds>(endSlow - startSlow).count() << "\n";
|
|
|
|
auto startAlloc{std::chrono::high_resolution_clock::now()};
|
|
allocPool<stub> a(10000);
|
|
auto endAlloc{std::chrono::high_resolution_clock::now()};
|
|
|
|
auto startFast{std::chrono::high_resolution_clock::now()};
|
|
for (size_t i{}; i < 10000; i++) {
|
|
ptr = a.getPtr();
|
|
a.returnPtr(ptr);
|
|
}
|
|
auto endFast{std::chrono::high_resolution_clock::now()};
|
|
|
|
std::cout << "Time (milliseconds) required for allocations with pool: " <<
|
|
std::chrono::duration_cast<std::chrono::milliseconds>(endFast - startFast).count() << "\n";
|
|
|
|
std::cout << "Time (milliseconds) required for real allocations when constructing pool: " <<
|
|
std::chrono::duration_cast<std::chrono::milliseconds>(endAlloc - startAlloc).count() << "\n";
|
|
return 0;
|
|
}
|