Blame view

3rdparty/boost_1_81_0/libs/compute/perf/perfdoc.py 1.55 KB
e6ccf0ce   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  #!/usr/bin/python
  
  # Copyright (c) 2014 Kyle Lutz <kyle.r.lutz@gmail.com>
  # Distributed under the Boost Software License, Version 1.0
  # See accompanying file LICENSE_1_0.txt or copy at
  # http://www.boost.org/LICENSE_1_0.txt
  #
  # See http://boostorg.github.com/compute for more information.
  
  import os
  import sys
  import pylab
  
  from perf import run_benchmark
  
  fignum = 0
  
  def plot_to_file(report, filename):
      global fignum
      fignum += 1
      pylab.figure(fignum)
  
      run_to_label = {
          "stl" : "C++ STL",
          "thrust" : "Thrust",
          "compute" : "Boost.Compute",
          "bolt" : "Bolt"
      }
  
      for run in sorted(report.samples.keys()):
          x = []
          y = []
  
          for sample in report.samples[run]:
              x.append(sample[0])
              y.append(sample[1])
  
          pylab.loglog(x, y, marker='o', label=run_to_label[run])
  
      pylab.xlabel("Size")
      pylab.ylabel("Time (ms)")
      pylab.legend(loc='upper left')
      pylab.savefig(filename)
  
  if __name__ == '__main__':
      sizes = [pow(2, x) for x in range(10, 26)]
      algorithms = [
          "accumulate",
          "count",
          "inner_product",
          "merge",
          "partial_sum",
          "partition",
          "reverse",
          "rotate",
          "saxpy",
          "sort",
          "unique",
      ]
  
      try:
          os.mkdir("perf_plots")
      except OSError:
          pass
  
      for algorithm in algorithms:
          print("running '%s'" % (algorithm))
          report = run_benchmark(algorithm, sizes, ["stl", "thrust", "bolt"])
          plot_to_file(report, "perf_plots/%s_time_plot.png" % algorithm)