benchmark.cc 1.5 KB
Newer Older
Y
Yan Chunwei 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "paddle/fluid/inference/utils/benchmark.h"
W
wanghuancoder 已提交
16

Y
Yan Chunwei 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#include "paddle/fluid/platform/enforce.h"

namespace paddle {
namespace inference {

std::string Benchmark::SerializeToString() const {
  std::stringstream ss;
  ss << "-----------------------------------------------------\n";
  ss << "name\t";
  ss << "batch_size\t";
  ss << "num_threads\t";
  ss << "latency\t";
  ss << "qps";
  ss << '\n';

  ss << name_ << "\t";
N
nhzlx 已提交
33
  ss << batch_size_ << "\t\t";
Y
Yan Chunwei 已提交
34 35
  ss << num_threads_ << "\t";
  ss << latency_ << "\t";
N
nhzlx 已提交
36
  ss << 1000.0 / latency_;
Y
Yan Chunwei 已提交
37 38 39 40 41
  ss << '\n';
  return ss.str();
}
void Benchmark::PersistToFile(const std::string &path) const {
  std::ofstream file(path, std::ios::app);
42 43 44
  PADDLE_ENFORCE_EQ(
      file.is_open(), true,
      platform::errors::Unavailable("Can not open %s to add benchmark.", path));
Y
Yan Chunwei 已提交
45 46 47 48 49 50 51
  file << SerializeToString();
  file.flush();
  file.close();
}

}  // namespace inference
}  // namespace paddle