summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author(no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-12-16 07:30:36 +0000
committer(no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-12-16 07:30:36 +0000
commit4a62be7d3ea2e8c56de875b97de274b20dbc3b1a (patch)
treeaf3097f92cad69ea9a404267e914c206598fc800
parente299d511db939232c628d6880e61c32e83937d66 (diff)
This commit was manufactured by cvs2svn to create tag 'v1_1d0'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_1d0@355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ext/tkutil/MANIFEST3
-rw-r--r--ext/tkutil/depend1
-rw-r--r--ext/tkutil/tkutil.c29
-rw-r--r--lib/profile.rb53
4 files changed, 53 insertions, 33 deletions
diff --git a/ext/tkutil/MANIFEST b/ext/tkutil/MANIFEST
deleted file mode 100644
index 870e04b586..0000000000
--- a/ext/tkutil/MANIFEST
+++ /dev/null
@@ -1,3 +0,0 @@
-MANIFEST
-tkutil.c
-depend
diff --git a/ext/tkutil/depend b/ext/tkutil/depend
deleted file mode 100644
index e325a82c0f..0000000000
--- a/ext/tkutil/depend
+++ /dev/null
@@ -1 +0,0 @@
-tkutil.o: tkutil.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h
diff --git a/ext/tkutil/tkutil.c b/ext/tkutil/tkutil.c
deleted file mode 100644
index 46f3b0f4e5..0000000000
--- a/ext/tkutil/tkutil.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/************************************************
-
- tk.c -
-
- $Author$
- $Date$
- created at: Fri Nov 3 00:47:54 JST 1995
-
-************************************************/
-
-#include "ruby.h"
-
-static VALUE
-tk_eval_cmd(argc, argv)
- int argc;
- VALUE argv[];
-{
- VALUE cmd, rest;
-
- rb_scan_args(argc, argv, "1*", &cmd, &rest);
- return rb_eval_cmd(cmd, rest);
-}
-
-static VALUE
-Init_tkutil()
-{
- VALUE mTK = rb_define_module("TkUtil");
- rb_define_singleton_method(mTK, "eval_cmd", tk_eval_cmd, -1);
-}
diff --git a/lib/profile.rb b/lib/profile.rb
new file mode 100644
index 0000000000..3abcc37662
--- /dev/null
+++ b/lib/profile.rb
@@ -0,0 +1,53 @@
+
+module Profiler__
+ Start = Float(Time.times[0])
+ top = "toplevel".intern
+ Stack = [[0, 0, top]]
+ MAP = {top => [1, 0, 0, "#toplevel"]}
+
+ p = proc{|event, file, line, id, binding, klass|
+ case event
+ when "call", "c-call"
+ now = Float(Time.times[0])
+ Stack.push [now, 0.0, id]
+ when "return", "c-return"
+ now = Float(Time.times[0])
+ tick = Stack.pop
+ data = MAP[id]
+ unless data
+ name = klass.to_s
+ if klass.kind_of? Class
+ name += "#"
+ else
+ name += "."
+ end
+ data = [0, 0, 0, name+id.id2name]
+ MAP[id] = data
+ end
+ data[0] += 1
+ cost = now - tick[0]
+ data[1] += cost
+ data[2] += cost - tick[1]
+ Stack[-1][1] += cost
+ end
+ }
+ END {
+ set_trace_func nil
+ total = Float(Time.times[0]) - Start
+ MAP[:toplevel][1] = total
+# f = open("./rmon.out", "w")
+ f = STDERR
+ data = MAP.values.sort!{|a,b| b[2] <=> a[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
+ p total
+ f.close
+ }
+ set_trace_func p
+end