/*
- * Copyright 2013 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
/**
* This file is supposed to be included from within
* FBStringTest. Do not use otherwise.
+ *
+ * override-include-guard
*/
-void BENCHFUN(initRNG)(int iters, int) {
- srand(seed);
-}
+void BENCHFUN(initRNG)(size_t /* iters */, size_t) { srand(seed); }
BENCHMARK_PARAM(BENCHFUN(initRNG), 0);
-void BENCHFUN(defaultCtor)(int iters, int) {
+void BENCHFUN(defaultCtor)(size_t iters, size_t) {
FOR_EACH_RANGE (i, 0, iters) {
STRING s[4096];
doNotOptimizeAway(&s);
}
BENCHMARK_PARAM(BENCHFUN(defaultCtor), 0);
-void BENCHFUN(copyCtor)(int iters, int arg) {
+void BENCHFUN(copyCtor)(size_t iters, size_t arg) {
STRING s;
BENCHMARK_SUSPEND {
randomString(&s, arg);
}
BENCHMARK_PARAM(BENCHFUN(copyCtor), 32768);
-void BENCHFUN(ctorFromArray)(int iters, int arg) {
+void BENCHFUN(ctorFromArray)(size_t iters, size_t arg) {
STRING s;
BENCHMARK_SUSPEND {
randomString(&s, arg);
}
BENCHMARK_PARAM(BENCHFUN(ctorFromArray), 32768);
-void BENCHFUN(ctorFromTwoPointers)(int iters, int arg) {
- static STRING s;
+void BENCHFUN(ctorFromTwoPointers)(size_t iters, size_t arg) {
+ /* library-local */ static STRING s;
BENCHMARK_SUSPEND {
if (s.size() < arg) s.resize(arg);
}
BENCHMARK_PARAM(BENCHFUN(ctorFromTwoPointers), 23);
BENCHMARK_PARAM(BENCHFUN(ctorFromTwoPointers), 24);
-void BENCHFUN(ctorFromChar)(int iters, int arg) {
+void BENCHFUN(ctorFromChar)(size_t iters, size_t arg) {
FOR_EACH_RANGE (i, 0, iters) {
STRING s1('a', arg);
doNotOptimizeAway(&s1);
}
BENCHMARK_PARAM(BENCHFUN(ctorFromChar), 1048576);
-void BENCHFUN(assignmentOp)(int iters, int arg) {
+void BENCHFUN(assignmentOp)(size_t iters, size_t arg) {
STRING s;
BENCHMARK_SUSPEND {
randomString(&s, arg);
}
BENCHMARK_PARAM(BENCHFUN(assignmentOp), 256);
-void BENCHFUN(assignmentFill)(int iters, int) {
+void BENCHFUN(assignmentFill)(size_t iters, size_t) {
STRING s;
FOR_EACH_RANGE (i, 0, iters) {
s = static_cast<char>(i);
}
BENCHMARK_PARAM(BENCHFUN(assignmentFill), 0);
-void BENCHFUN(resize)(int iters, int arg) {
+void BENCHFUN(resize)(size_t iters, size_t arg) {
STRING s;
FOR_EACH_RANGE (i, 0, iters) {
s.resize(random(0, arg));
}
BENCHMARK_PARAM(BENCHFUN(resize), 524288);
-void BENCHFUN(findSuccessful)(int iters, int arg) {
+void BENCHFUN(findSuccessful)(size_t iters, size_t /* arg */) {
size_t pos, len;
STRING s;
}
BENCHMARK_PARAM(BENCHFUN(findSuccessful), 524288);
-void BENCHFUN(findUnsuccessful)(int iters, int arg) {
+void BENCHFUN(findUnsuccessful)(size_t iters, size_t /* arg */) {
STRING s, s1;
BENCHMARK_SUSPEND {
}
BENCHMARK_PARAM(BENCHFUN(findUnsuccessful), 524288);
-void BENCHFUN(equality)(int iters, int arg) {
+void BENCHFUN(equality)(size_t iters, size_t arg) {
std::vector<STRING> haystack(arg);
BENCHMARK_SUSPEND {
}
BENCHMARK_PARAM(BENCHFUN(equality), 65536);
-void BENCHFUN(replace)(int iters, int arg) {
+void BENCHFUN(replace)(size_t iters, size_t arg) {
STRING s;
BENCHMARK_SUSPEND {
randomString(&s, arg);
}
BENCHMARK_PARAM(BENCHFUN(replace), 256);
-void BENCHFUN(push_back)(int iters, int arg) {
+void BENCHFUN(push_back)(size_t iters, size_t arg) {
FOR_EACH_RANGE (i, 0, iters) {
STRING s;
FOR_EACH_RANGE (j, 0, arg) {
BENCHMARK_PARAM(BENCHFUN(push_back), 127);
BENCHMARK_PARAM(BENCHFUN(push_back), 1024);
-void BENCHFUN(short_append)(int iters, int arg) {
+void BENCHFUN(short_append)(size_t iters, size_t arg) {
FOR_EACH_RANGE (i, 0, iters) {
STRING s;
FOR_EACH_RANGE (j, 0, arg) {
}
BENCHMARK_PARAM(BENCHFUN(short_append), 23);
BENCHMARK_PARAM(BENCHFUN(short_append), 1024);
+
+void BENCHFUN(getline)(size_t iters, size_t arg) {
+ string lines;
+
+ BENCHMARK_SUSPEND {
+ string line;
+ FOR_EACH_RANGE(i, 0, 512) {
+ randomString(&line, arg);
+ lines += line;
+ lines += '\n';
+ }
+ }
+
+ STRING line;
+ while (iters) {
+ std::istringstream is(lines);
+ while (iters && getline(is, line)) {
+ folly::doNotOptimizeAway(line.size());
+ iters--;
+ }
+ }
+}
+BENCHMARK_PARAM(BENCHFUN(getline), 23);
+BENCHMARK_PARAM(BENCHFUN(getline), 1000);