Sha256: a080d3aaa9ce9bcf8955c3e24eb5a3b99e01aad267486b5f6706a9ee34017ebd

Contents?: true

Size: 1.24 KB

Versions: 28

Compression:

Stored size: 1.24 KB

Contents

module Vedeu

  # Measure the duration. Used for debugging.
  #
  class Timer

    class << self

      # @example
      #   Vedeu.timer 'message' do
      #     # ... code to be measured
      #   end
      #
      # @param message [String]
      # @param block [Proc]
      # @return [void]
      def timer(message = '', &block)
        new(message).measure(&block)
      end

    end # Eigenclass

    # Returns a new instance of Vedeu::Timer.
    #
    # @param message [String]
    # @return [Vedeu::Timer]
    def initialize(message = '')
      @message = message
      @started = Time.now.to_f
    end

    # Write an entry to the log file stating how long a section of code took in
    # milliseconds. Useful for debugging performance.
    #
    # @return [void]
    def measure
      work = yield

      Vedeu.log(type: :timer, message: "#{message} took #{elapsed}ms.")

      work
    end

    protected

    # @!attribute [r] started
    # @return [Time]
    attr_reader :started

    # @!attribute [r] message
    # @return [String]
    attr_reader :message

    # Returns the elapsed time in milliseconds with 3 decimal places.
    #
    # @return [Float]
    def elapsed
      ((Time.now.to_f - started) * 1000).round(3)
    end

  end # Timer

end # Vedeu

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
vedeu-0.5.0 lib/vedeu/log/timer.rb
vedeu-0.4.65 lib/vedeu/timer.rb
vedeu-0.4.64 lib/vedeu/timer.rb
vedeu-0.4.63 lib/vedeu/timer.rb
vedeu-0.4.62 lib/vedeu/timer.rb
vedeu-0.4.61 lib/vedeu/timer.rb
vedeu-0.4.60 lib/vedeu/timer.rb
vedeu-0.4.59 lib/vedeu/timer.rb