8 #include "microtime.hpp"
10 #include "container.hpp"
43 char get_char()
const {
44 return (
char) (data % 256);
46 bool operator==(
const bytes_8 other) {
47 return data == other.data;
58 template <
class Datastruct>
61 size_t nb_total = (size_t) cmdline::parse_or_default_int64(
"n", 100000000);
62 size_t repeat = (size_t) cmdline::parse_or_default_int64(
"r", 1000);
63 size_t block = nb_total / repeat;
64 printf(
"length %lld\n",block);
65 uint64_t start_time = microtime::now();
68 for (
size_t j = 0; j < repeat; j++) {
69 for (
size_t i = 0; i < block; i++) {
73 for (
size_t i = 0; i < block; i++) {
74 res += d.pop_back().get();
77 exec_time = microtime::seconds_since(start_time);
80 template <
class Datastruct>
83 size_t nb_total = (size_t) cmdline::parse_or_default_int64(
"n", 100000000);
84 size_t repeat = (size_t) cmdline::parse_or_default_int64(
"r", 1000);
85 size_t block = nb_total / repeat;
86 printf(
"length %lld\n",block);
87 uint64_t start_time = microtime::now();
90 for (
size_t j = 0; j < repeat; j++) {
91 for (
size_t i = 0; i < block; i++) {
95 for (
size_t i = 0; i < block; i++) {
96 res += d.pop_front().get();
99 exec_time = microtime::seconds_since(start_time);
134 int main(
int argc,
char** argv) {
135 pasl::util::cmdline::set(argc, argv);
138 std::string sequence = cmdline::parse_or_default_string(
"sequence",
"stl_deque");
139 std::string scenario = cmdline::parse_or_default_string(
"scenario",
"fifo");
140 int chunk_size = cmdline::parse_or_default_int(
"chunk_size", 512);
141 if (chunk_size != 512) {
142 printf(
"not valid chunk size\n");
146 if (scenario ==
"fifo") {
147 if (sequence ==
"stl_deque") {
148 scenario_fifo<seq1_type>();
150 if (sequence ==
"chunkedseq") {
151 scenario_fifo<seq2_type>();
153 }
else if (sequence ==
"chunkedseq_ptrx") {
154 scenario_fifo<seq3_type>();
156 }
else if (sequence ==
"chunkedftree") {
157 scenario_fifo<fftree_deque_type>();
159 printf(
"not valid sequence\n");
163 else if (scenario ==
"lifo") {
164 if (sequence ==
"stl_deque") {
165 scenario_lifo<seq1_type>();
167 if (sequence ==
"chunkedseq") {
168 scenario_lifo<seq2_type>();
170 }
else if (sequence ==
"chunkedseq_ptrx") {
171 scenario_fifo<seq3_type>();
173 }
else if (sequence ==
"chunkedftree") {
174 scenario_fifo<fftree_deque_type>();
176 printf(
"not valid sequence\n");
182 printf(
"result %lld\n", (
long long)
res);
Fixed-capacity ring buffer.
Fixed-capacity ring buffer.
pasl::data::stl::deque_seq< Item > seq1_type
chunkedseqbase< basic_deque_configuration< Item, Chunk_capacity, Cache, Chunk_struct, bootchunkedseq::cdeque, Item_alloc >> deque
Definitions of a few cached-measurement policies.
chunkedseq::bootstrapped::deque< Item, 512, pasl::data::cachedmeasure::trivial< Item, size_t >, data::fixedcapacity::heap_allocated::ringbuffer_ptr > seq2_type
chunkedseq::ftree::deque< Item, 512, pasl::data::cachedmeasure::trivial< Item, size_t >, data::fixedcapacity::heap_allocated::ringbuffer_ptr > fftree_deque_type
int main(int argc, char **argv)
Chunked-sequence functor.