Sha256: 1706804a3ef045254c10ed0bd6072ec490cad0fb99758d6768de5478835a6d05

Contents?: true

Size: 864 Bytes

Versions: 169

Compression:

Stored size: 864 Bytes

Contents

# typed: true
# frozen_string_literal: true

module T::Profile
  SAMPLE_RATE = 101 # 1 out of that many typechecks will be measured
  class <<self
    attr_accessor :typecheck_duration
    attr_accessor :typecheck_samples
    attr_accessor :typecheck_sample_attempts
    def typecheck_duration_estimate
      total_typechecks = typecheck_samples * SAMPLE_RATE + (SAMPLE_RATE - typecheck_sample_attempts)
      typechecks_measured = typecheck_samples * SAMPLE_RATE
      if typechecks_measured.positive?
        typecheck_duration * SAMPLE_RATE * 1.0 * total_typechecks / typechecks_measured
      else
        0.0
      end
    end

    def typecheck_count_estimate
      typecheck_samples * SAMPLE_RATE
    end

    def reset
      @typecheck_duration = 0
      @typecheck_samples = 0
      @typecheck_sample_attempts = SAMPLE_RATE
    end
  end
  self.reset
end

Version data entries

169 entries across 169 versions & 1 rubygems

Version Path
sorbet-runtime-0.5.6134 lib/types/profile.rb
sorbet-runtime-0.5.6133 lib/types/profile.rb
sorbet-runtime-0.5.6130 lib/types/profile.rb
sorbet-runtime-0.5.6124 lib/types/profile.rb
sorbet-runtime-0.5.6121 lib/types/profile.rb
sorbet-runtime-0.5.6116 lib/types/profile.rb
sorbet-runtime-0.5.6111 lib/types/profile.rb
sorbet-runtime-0.5.6105 lib/types/profile.rb
sorbet-runtime-0.5.6101 lib/types/profile.rb
sorbet-runtime-0.5.6100 lib/types/profile.rb
sorbet-runtime-0.5.6084 lib/types/profile.rb
sorbet-runtime-0.5.6083 lib/types/profile.rb
sorbet-runtime-0.5.6079 lib/types/profile.rb
sorbet-runtime-0.5.6076 lib/types/profile.rb
sorbet-runtime-0.5.6064 lib/types/profile.rb
sorbet-runtime-0.5.6060 lib/types/profile.rb
sorbet-runtime-0.5.6052 lib/types/profile.rb
sorbet-runtime-0.5.6049 lib/types/profile.rb
sorbet-runtime-0.5.6042 lib/types/profile.rb
sorbet-runtime-0.5.6040 lib/types/profile.rb