/ src / bench / streams_findbyte.cpp
streams_findbyte.cpp
 1  // Copyright (c) 2023 The Bitcoin Core developers
 2  // Distributed under the MIT software license, see the accompanying
 3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 4  
 5  #include <bench/bench.h>
 6  
 7  #include <streams.h>
 8  #include <util/fs.h>
 9  
10  #include <cstddef>
11  #include <cstdint>
12  #include <cstdio>
13  
14  static void FindByte(benchmark::Bench& bench)
15  {
16      // Setup
17      AutoFile file{fsbridge::fopen("streams_tmp", "w+b")};
18      const size_t file_size = 200;
19      uint8_t data[file_size] = {0};
20      data[file_size-1] = 1;
21      file << data;
22      std::rewind(file.Get());
23      BufferedFile bf{file, /*nBufSize=*/file_size + 1, /*nRewindIn=*/file_size};
24  
25      bench.run([&] {
26          bf.SetPos(0);
27          bf.FindByte(std::byte(1));
28      });
29  
30      // Cleanup
31      file.fclose();
32      fs::remove("streams_tmp");
33  }
34  
35  BENCHMARK(FindByte, benchmark::PriorityLevel::HIGH);