From 1694b87e30d7e7a8c48d4503d3c81e01342240b6 Mon Sep 17 00:00:00 2001 From: Jiang Hailong Date: Fri, 7 Feb 2014 13:18:08 +0800 Subject: [PATCH] add sequence benchmark --- Makefile | 3 +++ benchmark_sequence.cc | 36 ++++++++++++++++++++++++++++++++++++ sequence.h | 1 + 3 files changed, 40 insertions(+) create mode 100644 benchmark_sequence.cc diff --git a/Makefile b/Makefile index b2f8679..2ec60b6 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,9 @@ test_server: $(OBJS) test_server.o benchmark: $(OBJS) benchmark.o g++ -pthread -o benchmark benchmark.o $(OBJS) +benchmark_sequence: $(OBJS) benchmark_sequence.o + g++ -pthread -o benchmark_sequence benchmark_sequence.o $(OBJS) + benchmark_train: $(OBJS) benchmark_train.o g++ -o benchmark_train benchmark_train.o $(OBJS) diff --git a/benchmark_sequence.cc b/benchmark_sequence.cc new file mode 100644 index 0000000..99c1e7d --- /dev/null +++ b/benchmark_sequence.cc @@ -0,0 +1,36 @@ +#include +#include +#include +#include "sequence.h" + +using namespace std; + +#define C 2 +#define N 65536 +#define MILLION 1000000 + +void loop(Sequence *sequence, int n) { + for (int i = 0; i < n; i++) { + sequence->set(sequence->get()); + } +} + +int main() { + cout << "size: " << sizeof(Sequence) << endl; + Sequence *sequences = new Sequence[C](); + thread threads[C]; + struct timeval start, end; + gettimeofday(&start, NULL); + for (int i = 0; i < C; i++) { + threads[i] = thread(loop, sequences + i, N); + } + for (int i = 0; i < C; i++) { + threads[i].join(); + } + gettimeofday(&end, NULL); + double use_time = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / (double)MILLION; + cout << "Process " << C * N << " operations" << endl; + cout << "Use time: " << use_time << " s" << endl; + cout << "ops: " << dec << (long)(C * N / use_time) << endl; + return 0; +} diff --git a/sequence.h b/sequence.h index e37ef15..be56a3d 100644 --- a/sequence.h +++ b/sequence.h @@ -9,4 +9,5 @@ class Sequence { Sequence(long value); static int INITIAL_VALUE; long value; + long padding[7]; // avoid false sharing };