GLogBenchmark.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright 2016-present Facebook, Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <folly/GLog.h>
  17. #include <folly/Benchmark.h>
  18. BENCHMARK(skip_overhead, iter) {
  19. auto prev = FLAGS_minloglevel;
  20. FLAGS_minloglevel = 2;
  21. for (unsigned i = 0; i < iter; ++i) {
  22. FB_LOG_EVERY_MS(INFO, 1000) << "every 1s";
  23. }
  24. FLAGS_minloglevel = prev;
  25. }
  26. BENCHMARK(dev_null_log_overhead, iter) {
  27. auto prev = FLAGS_minloglevel;
  28. FLAGS_minloglevel = 2;
  29. for (unsigned i = 0; i < iter; ++i) {
  30. FB_LOG_EVERY_MS(INFO, -1) << "every -1ms";
  31. }
  32. FLAGS_minloglevel = prev;
  33. }
  34. // ============================================================================
  35. // folly/test/GLogBenchmark.cpp relative time/iter iters/s
  36. // ============================================================================
  37. // skip_overhead 36.37ns 27.49M
  38. // dev_null_log_overhead 2.61us 382.57K
  39. // ============================================================================
  40. int main(int argc, char** argv) {
  41. gflags::ParseCommandLineFlags(&argc, &argv, true);
  42. folly::runBenchmarks();
  43. return 0;
  44. }