+ltjdbg.pformat = pformat
+
+-------------------- 所要時間合計
+require("socket")
+do
+ local max = math.max
+ local gettime = socket.gettime
+ local time_stat = {}
+ local function start_time_measure(n)
+ if not time_stat[n] then
+ time_stat[n] = {1, -gettime()}
+ else
+ local t = time_stat[n]
+ t[1], t[2] = t[1]+1, t[2]-gettime()
+ end
+ end
+ local function stop_time_measure(n)
+ local t = time_stat[n]
+ t[2] = t[2] + gettime()
+ end
+
+ local function print_measure()
+ stop_time_measure('RUN')
+ local temp = {}
+ for i,v in pairs(time_stat) do
+ temp[#temp+1] = { i, v[1], v[2], v[2]/v[1] }
+ end
+ table.sort(temp, function (a,b) return (a[4]>b[4]) end)
+ print()
+ print('desc', 'ave. (us)', 'times', 'total (ms)')
+ for _,v in ipairs(temp) do
+ print ((v[1] .. ' '):sub(1,16), 1000000*v[4], v[2], 1000*v[3])
+ end
+ end
+ if luatexja.base then
+ luatexja.base.start_time_measure = start_time_measure
+ luatexja.base.stop_time_measure = stop_time_measure
+ luatexbase.add_to_callback('stop_run', print_measure, 'luatexja.time_measure', 1)
+ luatexbase.add_to_callback('pre_linebreak_filter',
+ function(p)
+ start_time_measure('tex_linebreak'); return p
+ end,
+ 'measure_tex_linebreak', 20000)
+ end
+end