[前][次][番号順一覧][スレッド一覧]

ruby-changes:55008

From: hsbt <ko1@a...>
Date: Mon, 11 Mar 2019 20:37:23 +0900 (JST)
Subject: [ruby-changes:55008] hsbt:r67215 (trunk): Removed from standard library. No one maintains it from Ruby 2.0.0.

hsbt	2019-03-11 20:37:17 +0900 (Mon, 11 Mar 2019)

  New Revision: 67215

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=67215

  Log:
    Removed from standard library. No one maintains it from Ruby 2.0.0.
    
      [Bug #15652][ruby-core:91736]

  Removed files:
    trunk/lib/profile.rb
    trunk/lib/profiler.rb
  Modified files:
    trunk/NEWS
    trunk/doc/maintainers.rdoc
    trunk/doc/standard_library.rdoc
Index: lib/profile.rb
===================================================================
--- lib/profile.rb	(revision 67214)
+++ lib/profile.rb	(nonexistent)
@@ -1,11 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/lib/profile.rb#L0
-# frozen_string_literal: true
-require 'profiler'
-
-RubyVM::InstructionSequence.compile_option = {
-  :trace_instruction => true,
-  :specialized_instruction => false
-}
-END {
-  Profiler__::print_profile(STDERR)
-}
-Profiler__::start_profile

Property changes on: lib/profile.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Index: lib/profiler.rb
===================================================================
--- lib/profiler.rb	(revision 67214)
+++ lib/profiler.rb	(nonexistent)
@@ -1,149 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/lib/profiler.rb#L0
-# frozen_string_literal: true
-# Profile provides a way to Profile your Ruby application.
-#
-# Profiling your program is a way of determining which methods are called and
-# how long each method takes to complete.  This way you can detect which
-# methods are possible bottlenecks.
-#
-# Profiling your program will slow down your execution time considerably,
-# so activate it only when you need it.  Don't confuse benchmarking with
-# profiling.
-#
-# There are two ways to activate Profiling:
-#
-# == Command line
-#
-# Run your Ruby script with <code>-rprofile</code>:
-#
-#   ruby -rprofile example.rb
-#
-# If you're profiling an executable in your <code>$PATH</code> you can use
-# <code>ruby -S</code>:
-#
-#   ruby -rprofile -S some_executable
-#
-# == From code
-#
-# Just require 'profile':
-#
-#   require 'profile'
-#
-#   def slow_method
-#     5000.times do
-#       9999999999999999*999999999
-#     end
-#   end
-#
-#   def fast_method
-#     5000.times do
-#       9999999999999999+999999999
-#     end
-#   end
-#
-#   slow_method
-#   fast_method
-#
-# The output in both cases is a report when the execution is over:
-#
-#   ruby -rprofile example.rb
-#
-#     %   cumulative   self              self     total
-#    time   seconds   seconds    calls  ms/call  ms/call  name
-#    68.42     0.13      0.13        2    65.00    95.00  Integer#times
-#    15.79     0.16      0.03     5000     0.01     0.01  Fixnum#*
-#    15.79     0.19      0.03     5000     0.01     0.01  Fixnum#+
-#     0.00     0.19      0.00        2     0.00     0.00  IO#set_encoding
-#     0.00     0.19      0.00        1     0.00   100.00  Object#slow_method
-#     0.00     0.19      0.00        2     0.00     0.00  Module#method_added
-#     0.00     0.19      0.00        1     0.00    90.00  Object#fast_method
-#     0.00     0.19      0.00        1     0.00   190.00  #toplevel
-
-module Profiler__
-  class Wrapper < Struct.new(:defined_class, :method_id, :hash) # :nodoc:
-    private :defined_class=, :method_id=, :hash=
-
-    def initialize(klass, mid)
-      super(klass, mid, nil)
-      self.hash = Struct.instance_method(:hash).bind(self).call
-    end
-
-    def to_s
-      "#{defined_class.inspect}#".sub(/\A\#<Class:(.*)>#\z/, '\1.') << method_id.to_s
-    end
-    alias inspect to_s
-  end
-
-  # internal values
-  @@start = nil # the start time that profiling began
-  @@stacks = nil # the map of stacks keyed by thread
-  @@maps = nil # the map of call data keyed by thread, class and id. Call data contains the call count, total time,
-  PROFILE_CALL_PROC = TracePoint.new(*%i[call c_call b_call]) {|tp| # :nodoc:
-    now = Process.times[0]
-    stack = (@@stacks[Thread.current] ||= [])
-    stack.push [now, 0.0]
-  }
-  PROFILE_RETURN_PROC = TracePoint.new(*%i[return c_return b_return]) {|tp| # :nodoc:
-    now = Process.times[0]
-    key = Wrapper.new(tp.defined_class, tp.method_id)
-    stack = (@@stacks[Thread.current] ||= [])
-    if tick = stack.pop
-      threadmap = (@@maps[Thread.current] ||= {})
-      data = (threadmap[key] ||= [0, 0.0, 0.0, key])
-      data[0] += 1
-      cost = now - tick[0]
-      data[1] += cost
-      data[2] += cost - tick[1]
-      stack[-1][1] += cost if stack[-1]
-    end
-  }
-module_function
-  # Starts the profiler.
-  #
-  # See Profiler__ for more information.
-  def start_profile
-    @@start = Process.times[0]
-    @@stacks = {}
-    @@maps = {}
-    PROFILE_CALL_PROC.enable
-    PROFILE_RETURN_PROC.enable
-  end
-  # Stops the profiler.
-  #
-  # See Profiler__ for more information.
-  def stop_profile
-    PROFILE_CALL_PROC.disable
-    PROFILE_RETURN_PROC.disable
-  end
-  # Outputs the results from the profiler.
-  #
-  # See Profiler__ for more information.
-  def print_profile(f)
-    stop_profile
-    total = Process.times[0] - @@start
-    if total == 0 then total = 0.01 end
-    totals = {}
-    @@maps.values.each do |threadmap|
-      threadmap.each do |key, data|
-        total_data = (totals[key] ||= [0, 0.0, 0.0, key])
-        total_data[0] += data[0]
-        total_data[1] += data[1]
-        total_data[2] += data[2]
-      end
-    end
-
-    # Maybe we should show a per thread output and a totals view?
-
-    data = totals.values
-    data = data.sort_by{|x| -x[2]}
-    sum = 0
-    f.printf "  %%   cumulative   self              self     total\n"
-    f.printf " time   seconds   seconds    calls  ms/call  ms/call  name\n"
-    for d in data
-      sum += d[2]
-      f.printf "%6.2f %8.2f  %8.2f %8d ", d[2]/total*100, sum, d[2], d[0]
-      f.printf "%8.2f %8.2f  %s\n", d[2]*1000/d[0], d[1]*1000/d[0], d[3]
-    end
-    f.printf "%6.2f %8.2f  %8.2f %8d ", 0.0, total, 0.0, 1     # ???
-    f.printf "%8.2f %8.2f  %s\n", 0.0, total*1000, "#toplevel" # ???
-  end
-end

Property changes on: lib/profiler.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Index: doc/maintainers.rdoc
===================================================================
--- doc/maintainers.rdoc	(revision 67214)
+++ doc/maintainers.rdoc	(revision 67215)
@@ -88,10 +88,6 @@ Zachary Scott (zzak) https://github.com/ruby/ruby/blob/trunk/doc/maintainers.rdoc#L88
   Tanaka Akira (akr)
 [lib/prettyprint.rb]
   Tanaka Akira (akr)
-[lib/profile.rb]
-  _unmaintained_
-[lib/profiler.rb]
-  _unmaintained_
 [lib/pstore.rb]
   _unmaintained_
 [lib/racc/*]
Index: doc/standard_library.rdoc
===================================================================
--- doc/standard_library.rdoc	(revision 67214)
+++ doc/standard_library.rdoc	(revision 67215)
@@ -32,8 +32,6 @@ Open3:: Provides access to stdin, stdout https://github.com/ruby/ruby/blob/trunk/doc/standard_library.rdoc#L32
 OptionParser:: Ruby-oriented class for command-line option analysis
 PP:: Provides a PrettyPrinter for Ruby objects
 PrettyPrinter:: Implements a pretty printing algorithm for readable structure
-profile.rb:: Runs the Ruby Profiler__
-Profiler__:: Provides a way to profile your Ruby application
 PStore:: Implements a file based persistence mechanism based on a Hash
 Racc:: A LALR(1) parser generator written in Ruby.
 RbConfig:: Information of your configure and build of Ruby
Index: NEWS
===================================================================
--- NEWS	(revision 67214)
+++ NEWS	(revision 67215)
@@ -59,6 +59,10 @@ RSS:: https://github.com/ruby/ruby/blob/trunk/NEWS#L59
 
 === Stdlib compatibility issues (excluding feature bug fixes)
 
+profile.rb, Profiler__::
+
+  * Removed from standard library. No one maintains it from Ruby 2.0.0.
+
 === C API updates
 
 === Implementation improvements

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]