web/app/models/benchmark_result.rb
author Marcel Hlopko <marcel@hlopko.com>
Mon, 16 Nov 2015 16:15:12 +0100
changeset 303 ce55fabc46a0
parent 237 195fca969b9a
child 306 8050d8d3681f
permissions -rw-r--r--
Optimize ResultsController#configuration_results
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     1
class BenchmarkResult < ActiveRecord::Base
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     2
108
69aa849f6930 fixing cascades
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 106
diff changeset
     3
  belongs_to :benchmark_info, inverse_of: :benchmark_results
69aa849f6930 fixing cascades
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 106
diff changeset
     4
  belongs_to :benchmark_batch, inverse_of: :benchmark_results
69aa849f6930 fixing cascades
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 106
diff changeset
     5
  has_many :benchmark_durations, dependent: :destroy, inverse_of: :benchmark_result
177
8e7f0029550d Support for parameters in web app.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
     6
  has_many :benchmark_parameters, dependent: :destroy, inverse_of: :benchmark_result
8e7f0029550d Support for parameters in web app.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
     7
237
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
     8
  scope :for_configuration_id, -> (configuration_id) do
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
     9
    joins(:benchmark_batch).
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    10
      where("benchmark_batches.benchmark_configuration_id = ?", configuration_id)
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    11
  end
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    12
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    13
  scope :with_batch_and_duration_preloaded, -> do
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    14
    includes(:benchmark_batch, :benchmark_durations)
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    15
  end
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    16
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    17
  scope :newest_first, -> do
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    18
    order("benchmark_batches.performed_at desc, benchmark_batches.created_at desc")
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    19
  end
44
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    20
68
ea16cf625333 add results page
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 65
diff changeset
    21
  def average_duration
ea16cf625333 add results page
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 65
diff changeset
    22
    sum = benchmark_durations.inject(0) { |acc, val| acc += val.duration }
ea16cf625333 add results page
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 65
diff changeset
    23
    sum / benchmark_durations.size
ea16cf625333 add results page
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 65
diff changeset
    24
  end
ea16cf625333 add results page
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 65
diff changeset
    25
70
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    26
  def min_duration
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    27
    benchmark_durations.map { |duration| duration.duration }.min
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    28
  end
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    29
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    30
  def max_duration
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    31
    benchmark_durations.map { |duration| duration.duration }.max
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    32
  end
e9c892b1c82b nicer tables, useless graph removed
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 68
diff changeset
    33
133
bef72dea1e7e Initial Rickshaw experiments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
    34
  def to_json
233
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    35
    { timestamp: performed_at.to_i, value: min_duration }
133
bef72dea1e7e Initial Rickshaw experiments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
    36
  end
bef72dea1e7e Initial Rickshaw experiments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
    37
157
91374e0a6062 migrate compare charts to rickshaw
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 156
diff changeset
    38
  def performed_at
91374e0a6062 migrate compare charts to rickshaw
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 156
diff changeset
    39
    benchmark_batch.performed_at
91374e0a6062 migrate compare charts to rickshaw
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 156
diff changeset
    40
  end
91374e0a6062 migrate compare charts to rickshaw
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 156
diff changeset
    41
303
ce55fabc46a0 Optimize ResultsController#configuration_results
Marcel Hlopko <marcel@hlopko.com>
parents: 237
diff changeset
    42
  def benchmark_name
ce55fabc46a0 Optimize ResultsController#configuration_results
Marcel Hlopko <marcel@hlopko.com>
parents: 237
diff changeset
    43
    benchmark_info.name
ce55fabc46a0 Optimize ResultsController#configuration_results
Marcel Hlopko <marcel@hlopko.com>
parents: 237
diff changeset
    44
  end
ce55fabc46a0 Optimize ResultsController#configuration_results
Marcel Hlopko <marcel@hlopko.com>
parents: 237
diff changeset
    45
178
bafafc76f0be tiny cleanup
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 174 177
diff changeset
    46
  def benchmark_parameters_json
bafafc76f0be tiny cleanup
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 174 177
diff changeset
    47
    JSON.generate(benchmark_parameters.collect { |p| p.to_json } )
bafafc76f0be tiny cleanup
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 174 177
diff changeset
    48
  end
bafafc76f0be tiny cleanup
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 174 177
diff changeset
    49
233
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    50
end
133
bef72dea1e7e Initial Rickshaw experiments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
    51
233
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    52
# == Schema Information
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    53
#
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    54
# Table name: benchmark_results
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    55
#
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    56
#  id                 :integer          not null, primary key
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    57
#  benchmark_info_id  :integer
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    58
#  created_at         :datetime
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    59
#  updated_at         :datetime
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    60
#  benchmark_batch_id :integer
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    61
#
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 231
diff changeset
    62