/*
- * Copyright 2015 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.
#include <folly/String.h>
#include <boost/algorithm/string.hpp>
-#include <cstdarg>
#include <folly/Benchmark.h>
+#include <folly/Random.h>
#include <random>
using namespace folly;
const size_t kURIBmStringLength = 256;
const uint32_t kURIPassThroughPercentage = 50;
+fbstring hexlifyInput;
+fbstring hexlifyOutput;
+const size_t kHexlifyLength = 1024;
+
void initBenchmark() {
std::mt19937 rnd;
}
uribmEscapedString = uriEscape<fbstring>(uribmString);
+
+ // hexlify
+ hexlifyInput.resize(kHexlifyLength);
+ Random::secureRandom(&hexlifyInput[0], kHexlifyLength);
+ folly::hexlify(hexlifyInput, hexlifyOutput);
}
BENCHMARK(BM_cEscape, iters) {
}
}
+BENCHMARK(BM_unhexlify, iters) {
+ // iters/sec = bytes output per sec
+ std::string unhexed;
+ folly::StringPiece hex = hexlifyOutput;
+ for (; iters >= hex.size(); iters -= hex.size()) {
+ folly::unhexlify(hex, unhexed);
+ }
+ iters -= iters % 2; // round down to an even number of chars
+ hex = hex.subpiece(0, iters);
+ folly::unhexlify(hex, unhexed);
+}
+
} // namespace
//////////////////////////////////////////////////////////////////////