aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-09-09 02:27:41 +0200
committerMike Pall <mike>2013-09-09 04:26:12 +0200
commit1fd2048c8d296e7bde3e27b8ec1fc5b2ea834d3c (patch)
tree4fe830c02eaeb247ce1dace847c9454463026aef
parentcb336995a8b1af7efade1aec543b3624f59c2570 (diff)
downloadluajit-1fd2048c8d296e7bde3e27b8ec1fc5b2ea834d3c.tar.gz
luajit-1fd2048c8d296e7bde3e27b8ec1fc5b2ea834d3c.tar.bz2
luajit-1fd2048c8d296e7bde3e27b8ec1fc5b2ea834d3c.zip
Switch from -jp=n<top_n> to -jp=m<min_pct> as a threshold.
-rw-r--r--src/jit/p.lua16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/jit/p.lua b/src/jit/p.lua
index 75d93215..90b50bca 100644
--- a/src/jit/p.lua
+++ b/src/jit/p.lua
@@ -32,7 +32,7 @@
32-- z Show zones. Can be combined with stack dumps, e.g. zf or fz. 32-- z Show zones. Can be combined with stack dumps, e.g. zf or fz.
33-- r Show raw sample counts. Default: show percentages. 33-- r Show raw sample counts. Default: show percentages.
34-- G Produce output suitable for graphical tools (e.g. flame graphs). 34-- G Produce output suitable for graphical tools (e.g. flame graphs).
35-- n<number> Show top N samples. Default: 10. 35-- m<number> Minimum sample percentage to be shown. Default: 3.
36-- i<number> Sampling interval in milliseconds. Default: 10. 36-- i<number> Sampling interval in milliseconds. Default: 10.
37-- 37--
38---------------------------------------------------------------------------- 38----------------------------------------------------------------------------
@@ -53,7 +53,7 @@ local out
53------------------------------------------------------------------------------ 53------------------------------------------------------------------------------
54 54
55local prof_ud 55local prof_ud
56local prof_states, prof_split, prof_maxn, prof_raw, prof_fmt, prof_depth 56local prof_states, prof_split, prof_min, prof_raw, prof_fmt, prof_depth
57local prof_count1, prof_count2, prof_samples 57local prof_count1, prof_count2, prof_samples
58 58
59local map_vmmode = { 59local map_vmmode = {
@@ -121,11 +121,13 @@ local function prof_top(count1, count2, samples, indent)
121 end 121 end
122 sort(t, function(a, b) return count1[a] > count1[b] end) 122 sort(t, function(a, b) return count1[a] > count1[b] end)
123 local raw = prof_raw 123 local raw = prof_raw
124 for i=1,min(n, prof_maxn) do 124 for i=1,n do
125 local k = t[i] 125 local k = t[i]
126 local v = count1[k] 126 local v = count1[k]
127 local pct = floor(v*100/samples + 0.5)
128 if pct < prof_min then break end
127 if not raw then 129 if not raw then
128 out:write(format("%s%2d%% %s\n", indent, floor(v*100/samples + 0.5), k)) 130 out:write(format("%s%2d%% %s\n", indent, pct, k))
129 elseif raw == "r" then 131 elseif raw == "r" then
130 out:write(format("%s%5d %s\n", indent, v, k)) 132 out:write(format("%s%5d %s\n", indent, v, k))
131 else 133 else
@@ -162,8 +164,8 @@ end
162local function prof_start(mode) 164local function prof_start(mode)
163 local interval = "" 165 local interval = ""
164 mode = mode:gsub("i%d*", function(s) interval = s; return "" end) 166 mode = mode:gsub("i%d*", function(s) interval = s; return "" end)
165 prof_maxn = 10 167 prof_min = 3
166 mode = mode:gsub("n(%d+)", function(s) prof_maxn = tonumber(s); return "" end) 168 mode = mode:gsub("m(%d+)", function(s) prof_min = tonumber(s); return "" end)
167 prof_depth = 1 169 prof_depth = 1
168 mode = mode:gsub("%-?%d+", function(s) prof_depth = tonumber(s); return "" end) 170 mode = mode:gsub("%-?%d+", function(s) prof_depth = tonumber(s); return "" end)
169 local m = {} 171 local m = {}
@@ -184,7 +186,7 @@ local function prof_start(mode)
184 prof_fmt = flags..scope.."Z;" 186 prof_fmt = flags..scope.."Z;"
185 prof_depth = -100 187 prof_depth = -100
186 prof_raw = true 188 prof_raw = true
187 prof_maxn = 2147483647 189 prof_min = 0
188 elseif scope == "" then 190 elseif scope == "" then
189 prof_fmt = false 191 prof_fmt = false
190 else 192 else