Add benchmark test for base64

This will be used to compare new implementations of Base64 (abseil and
Rust).

Current on my machine results look like.

❯ out/Release/base64_benchmark
---------------------------------------------------------------------------
Benchmark                                 Time             CPU   Iterations
---------------------------------------------------------------------------
BM_Base64Encode/64                      123 ns          123 ns      5689290
BM_Base64Encode/512                     750 ns          750 ns       941209
BM_Base64Encode/4096                   5973 ns         5972 ns       122699
BM_Base64Encode/32768                 45960 ns        45944 ns        14989
BM_Base64Encode/262144               372323 ns       372158 ns         1899
BM_Base64Encode/2097152             2984810 ns      2983847 ns          237
BM_Base64Encode/8388608            12073887 ns     12067914 ns           58
BM_Base64Decode/64                      275 ns          275 ns      2543692
BM_Base64Decode/512                    1897 ns         1897 ns       371668
BM_Base64Decode/4096                  14875 ns        14871 ns        47373
BM_Base64Decode/32768                118947 ns       118904 ns         5904
BM_Base64Decode/262144               946780 ns       946229 ns          743
BM_Base64Decode/2097152             7587559 ns      7585678 ns           93
BM_Base64Decode/8388608            30476757 ns     30464404 ns           23
BM_Base64DecodeForgiving/64             271 ns          271 ns      2575094
BM_Base64DecodeForgiving/512           1991 ns         1990 ns       350958
BM_Base64DecodeForgiving/4096         15746 ns        15742 ns        44414
BM_Base64DecodeForgiving/32768       125640 ns       125550 ns         5598
BM_Base64DecodeForgiving/262144     1006027 ns      1005577 ns          701
BM_Base64DecodeForgiving/2097152    8041495 ns      8037190 ns           87
BM_Base64DecodeForgiving/8388608   32310820 ns     32292374 ns           22


Bug: webrtc:406686729
Change-Id: I213ff84575352704b87f14ba50802a0617f9ddd9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/384101
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44298}
3 files changed
tree: 4b25eef9896ffdd4d3cf6edd3b442249c754614b
  1. api/
  2. audio/
  3. build_overrides/
  4. call/
  5. common_audio/
  6. common_video/
  7. data/
  8. docs/
  9. examples/
  10. experiments/
  11. g3doc/
  12. infra/
  13. logging/
  14. media/
  15. modules/
  16. net/
  17. p2p/
  18. pc/
  19. resources/
  20. rtc_base/
  21. rtc_tools/
  22. sdk/
  23. stats/
  24. system_wrappers/
  25. test/
  26. tools_webrtc/
  27. video/
  28. .clang-format
  29. .git-blame-ignore-revs
  30. .gitignore
  31. .gn
  32. .mailmap
  33. .rustfmt.toml
  34. .style.yapf
  35. .vpython3
  36. AUTHORS
  37. BUILD.gn
  38. CODE_OF_CONDUCT.md
  39. codereview.settings
  40. DEPS
  41. DIR_METADATA
  42. ENG_REVIEW_OWNERS
  43. LICENSE
  44. license_template.txt
  45. native-api.md
  46. OWNERS
  47. OWNERS_INFRA
  48. PATENTS
  49. PRESUBMIT.py
  50. presubmit_test.py
  51. presubmit_test_mocks.py
  52. pylintrc
  53. pylintrc_old_style
  54. README.chromium
  55. README.md
  56. WATCHLISTS
  57. webrtc.gni
  58. webrtc_lib_link_test.cc
  59. whitespace.txt
README.md

WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.

Development

See here for instructions on how to get started developing with the native code.

Authoritative list of directories that contain the native API header files.

More info