std::vector GetSortedPeers()

in e2e-examples/gcs/benchmark/print_result.cc [68:94]


std::vector<PeerValue> GetSortedPeers(
    std::vector<RunnerWatcher::Operation>& operations) {
  std::unordered_map<std::string, PeerValue> peer_map;
  for (size_t i = 0, i_max = operations.size(); i < i_max; i++) {
    const auto& op = operations[i];
    if (operations[i].status.ok()) {
      auto& value = peer_map[op.peer];
      value.total_count += 1;
      value.total_size += op.bytes;
      value.total_time += op.elapsed_time;
      value.indexes.push_back(i);
    }
  }
  std::vector<PeerValue> peers;
  for (auto& i : peer_map) {
    i.second.throughput =
        i.second.total_size / absl::ToDoubleSeconds(i.second.total_time);
    peers.push_back(std::move(i.second));
    peers.back().peer = i.first;
  }
  // Sorted by throughput in an ascending order
  std::sort(peers.begin(), peers.end(),
            [](const PeerValue& a, const PeerValue& b) {
              return a.throughput < b.throughput;
            });
  return peers;
}