From 38d29d3ca50cfe728773dafc57f2d6b0091646f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20Tomic=CC=8Cevic=CC=81?=
 <dominik.tomicevic@gmail.com>
Date: Mon, 22 Jun 2015 17:05:42 +0200
Subject: [PATCH] modified allocator benchmark to be multithreaded

---
 benchmark/allocator     | Bin 9080 -> 0 bytes
 benchmark/allocator.cpp |  20 ++++++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)
 delete mode 100755 benchmark/allocator

diff --git a/benchmark/allocator b/benchmark/allocator
deleted file mode 100755
index 6c37089bd9d07e614f6c77e7481d0971a03e57d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9080
zcmeHNUuauZ7(ch|wyf(++*H)5%Z8O|v2DOXhcXgvG-ah`Yu(1goh9w9iR2&YZJWx_
z4yhQXkY`cwL17Gh^TC(dV#gGG5EMaBwkJpSAP6GDl*Zrh+;h{Lo77i9?g!_5f6woH
z_dDl?n|toJcYfX6C4|u}#7dVCVjo&*hY+jc5F{ZUKue%WnT)*<KN~;!BCV}tw5lC7
z;{1p}DW~ISrdvbQ_)x1&XdSr;q@x-mq_oV6Mad>FUg<7e3|v>VpL&m$73&czZdJ;8
zYau<~G<oqJ4BB{4=m<x51_U(TPHnL9WX8;u%rb0VyfKY;O2<=Y-J8^w-$G$2TbPyE
z!dwwSUc3)99@mIOy#>!UH+w0~jGQZ{@}_O_;?*_Y{dxp-?2T=S>pH5|bu2a=bA@63
zTGrKBU)Q=4*TI&ukdyPv`E)TSOI8`z*%{A);r?*Oa#q%#d&MCsUoE<}NgG}W<C&j>
zN8O9J+W`ZYGMD<d{K6V<RF9$V#$#@KTzFge)x`MZ@%Y%db5Ddlb%Rc-XfWcax+<#>
zhjHJIP!0<b01JSZz$@Sb;2(jX2j}g~IPMLu?PchD!Pf!sIXH7mqPdB&Z0@|>e##Y$
z=Wm9WaN98@(T6s?Fkc?dWz)m6%eh(TqyuQo<Nfdd{?htm<ePVjxi^lzd!+m*Y#}t!
z+p8MyJEhYG!ZodM9Pev4aUNbDeazV*O#7OdPvvsOnW4xK63C{Nt3AE~yRnrk0%ryX
zn`0P1infJ+6+bJj@l(t5mYE-V)-{cI3}cx82<pxCd0gwG&`E=6^iwa<;FDhgzXE;*
z{0jIL@GIa~;D1(umlD-qVy9!LrjlzSQ{7#^jO!b(UXMo_k)MJGqhgH@L-mi*C05t1
z<Xo_@F&8YYi{FE9BCh8~qOo!DFY#o=xbQ>p;Fu7{FFmuFSZ!E4>Su`5_-g!OgYJb}
z6V*TK$6$-BC*HaicsX`1CSTcD<1<+ODB-IciR#VzeH1Sp*=vy9yQv&E>yLmp`tf*&
zzDxBzs^6*lfa-fy--mwUy@#)2Ky0ef|0#GagHGJO)o3(q>F1{OT~qp+5+8zZe?jSK
zN}o}hq;v(6{ha?0RFa$X`IgVWPl2-?z<)FnW&Ta*L*gMO4@w!`O1MX9@V|ai7?qF_
z>f05l*&*7~nN92egXc8QXkOO*g63~)UemlYns4<h;8(z}fL{T>0)7Sj3iuW9E8tha
zuYg|xzXE;*{)-CSeK>rY^X`jEd3JKjI+{++N_AW|7Kty46Xj5ip6PM7ODNlHD!C|D
z0=ArktfWFJFKYXvJnB<N>oSegYaE5ItmB=ABBO@+2&w>1lm|K?IJGE;+cSHPnbkx&
zN|&6er0j%KmMP83j9Id>#RC0_rr*kxi%T>m_eZ6D8VF61A@OZNm&|7{)|^=YM#fAr
z;Y0aUwjlcXvZY)6=DdG#ggZC-_*nvv?A*t^e51l6OpZz*22AO+^N5=EfOE76xm(8!
zKz7IML5y>p2$$&Qz@WjGV|F0lTLm$~`QCx~L1mbt2zs~vyhrETGQ<AlL&cx>=zMeK
z_7^?+qSCkKV>R9LeQ4{=+I-^CnJ5eBoZIuP9Vfo(tXWk}h$si+kX22xU2Is$4r_-s
r#@cyzwAwdbquS=}JKWix<lNif+}UJHWZP{!?XfqUv(?&e1|j|dKKHOG

diff --git a/benchmark/allocator.cpp b/benchmark/allocator.cpp
index 7ad46705c..2ab13487e 100644
--- a/benchmark/allocator.cpp
+++ b/benchmark/allocator.cpp
@@ -1,5 +1,8 @@
 #include <iostream>
 
+#include <vector>
+#include <thread>
+
 #include "utils/memory/allocator.hpp"
 #include "utils/memory/maker.hpp"
 
@@ -26,7 +29,7 @@ void test_classic(int N)
 
 void test_fast(int N)
 {
-    TestStruct** xs = makeme<TestStruct*>(N);
+    TestStruct** xs = new TestStruct*[N];
 
     for(int i = 0; i < N; ++i)
         xs[i] = makeme<TestStruct>(i, i, i, i);
@@ -39,8 +42,17 @@ void test_fast(int N)
 
 int main(void)
 {
-    constexpr int N = 20000000;
-    test_classic(N);
-    test_fast(N);
+    constexpr int n_threads = 256;
+    constexpr int N = 80000000 / n_threads;
+
+    std::vector<std::thread> threads;
+
+    for(int i = 0; i < n_threads; ++i)
+        threads.push_back(std::thread(test_fast, N));
+
+    for(auto& thread : threads){
+        thread.join();
+    }
+
     return 0;
 }