jrfonseca / gprof2dot Goto Github PK
View Code? Open in Web Editor NEWConverts profiling output to a dot graph.
License: GNU Lesser General Public License v3.0
Converts profiling output to a dot graph.
License: GNU Lesser General Public License v3.0
Currently, the timings on node labels are shown like this: 0.1234
It's not immediately clear that that's in seconds. Can we add a " s" to the label? Or maybe even consider changing it to milliseconds and adding " ms".
I'm not familiar with all the input formats and if they have the timing information in seconds or not, but if it's just a matter of changing the label formatting, I'm happy to raise a PR.
I have profile data in the sleepy format. The data contains about 14000 functions with a huge cycle (~7500). Processing data takes about 6 hours.
I fixed the problem. The processing time was reduced to 2 minutes. I want to share the fix. The patch (gprof2dot.py.diff.txt) consists of the following changes
Python profiles are sometimes hard to read because all you see is:
but you don't see
There may be a dozen different modules with the same name in different packages, and don't let me get started about methods called __init__
.
Now it's hard to do anything about class names if the profiling data doesn't contain that information (at least on Python 2.7; Python 3 introduced __qualname__
that gives me hope for the eventual bright future, although I haven't actually checked if the profiler records those).
Package names are also difficult, since all we have is filenames. (If the files still exist you could walk up the tree looking for __init__.py
files: when these stop, you found the root package. Except Python 3.3 breaks that heuristic with its implicit namespace packages and anyway, you cannot always rely on having the source code available -- what if the profile was made on a different machine?).
Still, not all hope is lost: the full filename is available, and humans can figure out the package name from that (or look up the class name from filename + line number). Filenames are long, though, and would not fit in the graph nicely -- but wouldn't it be awesome if they were available via tooltips?
Certain graphviz formats (such as SVG) support tooltips. I have a patch prepared.
Hi!
Not sure if {(tuple) for ...} construction works in this old python version installed on CentOS 6 by default, but maybe it will work if replace it to dict((tuple) for ...). Or maybe you can "fix" it in setup.py by replacing:
'Programming Language :: Python :: 2',
with
'Programming Language :: Python :: 2.7',
# gprof2dot --help
Traceback (most recent call last):
File "/usr/bin/gprof2dot", line 11, in <module>
load_entry_point('gprof2dot==2017.9.19', 'console_scripts', 'gprof2dot')()
File "/usr/lib/python2.6/site-packages/pkg_resources/__init__.py", line 561, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2631, in load_entry_point
return ep.load()
File "/usr/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2291, in load
return self.resolve()
File "/usr/lib/python2.6/site-packages/pkg_resources/__init__.py", line 2297, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.6/site-packages/gprof2dot.py", line 337
frontier = frontier.union({(new_node, node_depth - 1) for new_node in newNodes})
^
SyntaxError: invalid syntax
A long time ago a wrote a patch for libxslt to write xslt evaluation profiles in gprof compatible format. This makes gprof2dot an awesome tool to analyze xxslt slowness. Unfortunately I had to apply a little patch to gprof2dot - see below. This seems to be caused by special events: TIME and TOTAL_TIME. Do you have any insight here what goes wrong? I've uploaded a sample profile to: https://gist.github.com/ensonic/d78b65fc3d9067b97f82
diff --git a/gprof2dot.py b/gprof2dot.py
index 7a11b3a..9a6e7b9 100755
--- a/gprof2dot.py
+++ b/gprof2dot.py
@@ -491,7 +491,12 @@ class Profile(Object):
return function[outevent]
def _integrate_call(self, call, outevent, inevent):
- assert outevent not in call
+ if outevent not in call:
+ # outevent 'Total time' not in call, inevent 'Time'
+ sys.stderr.write ("outevent '%s' not in call, inevent '%s'\n" % (outevent.name, inevent.name))
+ return 0
+ #assert outevent not in call
assert call.ratio is not None
callee = self.functions[call.callee_id]
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
I'm having problems with files generated from the latest version of VTune running on windows 10. I get " unrecognized call graph entry" warning for every line of the file. From what i could tell the problem is the lack of carriage return in files generated in VTune. I tried running the files in the test folder and the graphs were created successfully but when i used a program to remove the carriage returns from the files the graphs came out empty.
I encountered this when trying to run
gprof2dot -f pstats <file>
Traceback (most recent call last):
File "/home/ajamato/.local/bin/gprof2dot", line 8, in <module>
sys.exit(main())
File "/home/ajamato/.local/lib/python3.9/site-packages/gprof2dot.py", line 3457, in main
parser = Format(*args)
File "/home/ajamato/.local/lib/python3.9/site-packages/gprof2dot.py", line 2685, in __init__
self.stats = pstats.Stats(*filename)
File "/usr/lib/python3.9/pstats.py", line 114, in __init__
self.init(arg)
File "/usr/lib/python3.9/pstats.py", line 130, in init
self.get_top_level_stats()
File "/usr/lib/python3.9/pstats.py", line 159, in get_top_level_stats
for func, (cc, nc, tt, ct, callers) in self.stats.items():
AttributeError: 'ellipsis' object has no attribute 'items'
Unfortunately I can't share the file.
I am not sure if its related to the input files or not. But if you have any ideas what to look for I can look at the file and share findings to help debug
From pip list:
gprof2dot 2021.2.21
I also did try to load the sample pstat files on this repro, but got this error as well. Perhaps there is some reason this version can't process those files?
gprof2dot -f pstats cProfile.pstats
error: failed to load cProfile.pstats, maybe they are generated by different python version?
gprof2dot -f pstats profile.pstats
error: failed to load profile.pstats, maybe they are generated by different python version?
I also downloaded the standalone version and got that error as well
~/gprof2dot.py -f pstats profile.pstats
error: failed to load profile.pstats, maybe they are generated by different python version?
/usr/bin/env python3 --version
Python 3.9.2
I just noticed that in the HPROF section the link is dead.
It is still available here though: http://rjp.io/2012/07/03/java-profiling/
But I'd recommend embedding the important part in the readme anyway.
Running: perf script | c++filt | gprof2dot -f perf | dot -Tpng -o output.png
causes a RuntimeError:
...
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 418, in _tarjan
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 418, in _tarjan
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 418, in _tarjan
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 418, in _tarjan
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 418, in _tarjan
order = self._tarjan(callee, order, stack, data)
File "/usr/local/lib/python2.7/dist-packages/gprof2dot.py", line 405, in _tarjan
func_data = self._TarjanData(order)
RuntimeError: maximum recursion depth exceeded
See here: tdsmith/homebrew-pypi-poet#16 (comment)
is the are problem in gprof2dot with the callgrind parser? gprof2dot can't process a callgrind file (see start of file below). When gprof2dot is called with
python2.7 /usr/local/src/gprof2dot/gprof2dot.py --format=callgrind callgrind.out.8976-01
gprof2dot complains:
warning: line 2: unexpected line
version: 1
digraph {
graph [fontname=Arial, nodesep=0.125, ranksep=0.25];
node [fontcolor=white, fontname=Arial, height=0, shape=box, style=filled, width=0];
edge [fontname=Arial];
}
This looks like a principal problem with the callgrind format parser. Using instead python3.5 changes nothing. This happens on debian buster/sid. Looks like something stupid, maybe on my side... I tried as well the version tags/2016.10.13.
-gn
Begin of callgrind.out.8976-01:
# callgrind format
version: 1
creator: callgrind-3.13.0
pid: 8976
https://pypi.python.org/pypi/gprof2dot currently links to https://code.google.com/p/jrfonseca/wiki/Gprof2Dot, instead of GitHub. I see you've fixed that in your setup.py already, so the next release will update the PyPI link too, but you don't have to wait for that. You can also log in to PyPI over the web and update the home page link in a web form.
I'm trying to do gprof2dot.exe c:\temp\profile.pstat
the error is
unexpected end of file
Any suggestions are appreciated
FlameGraph is another profiling visualization tool. It grokes a simple text-based line-oriented format. It ships with a series of stackcollapse
scripts which generate the expected input from different tools (gdb, instruments, jstack, ljp, perf, GDB based Poor Man's profiler, stap, VTune).
It might be interesting to add a parser for this format:
grep
(in order to focus on a given part of the execution), sed
, perl
, awk
and friends. One example of this is the stackcollapse-recursive
script which merges direct recursive calls.i run my code as :
./my_bin myconfig > a
i got a gmon.out, but its size is only 322byte, and contains no info. the code is time costly, cost 20s to run.
I am desperate about this, because i do as most blog, step by step.
but cant get my gmon.out well, can you help on this?
compiler: i use gcc, cmake, -O2 -std=c++11 -g -pg
This is a feature request to add a flag to color graph nodes based on time spent in each function, rather than coloring based on time spend in the whole subtree.
Concrete example (from https://github.com/jrfonseca/gprof2dot/blob/master/sample.png): main
is colored red (since it's the call tree root), yet it's likely not a good place to look for optimizations. Same goes with small functions on top of expensive calls (read_all_makefiles
). They should probably not be colored "hot" if they're fast. The expensive function call should!
I will look into implementing this soon if I have some spare time.
In a Ubuntu system I did
pip install gprof2dot
/path/to/MY/executable.exe arg1 arg2
gprof path/to/MY/executable.exe | gprof2dot.py | dot -Tpng -o output.png
and encountered two problems.
firstly my system could not find any gprof2dot.py.
Which was easy I changed it to;
/path/to/your/executable arg1 arg2
gprof path/to/your/executable | gprof2dot | dot -Tpng -o output.png
This produced an output.png that was "MAIN__100.00% (100.00%)"
I compiled /path/to/MY/executable.exe with
/usr//bin/gfortran-4.9 -g -pg -O3 -cpp -Wall -Wtabs -fbacktrace
gprof path/to/your/executable | gprof2dot.py | dot -Tpng -o output.png
or
gprof path/to/your/executable | gprof2dot | dot -Tpng -o output.png
Sometimes it's easier to reason about the performance of some code when you can see absolute times per node rather than percentage of total runtime. For example, you might know a query ought to take 10 ms and if a function that only issues a query is taking 50 ms, it might be the clue you needed. It's easier to detect stuff like this when absolute times are displayed rather than "this function was 0.5% of total runtime".
It would be nice to see total time in a function as well as average time per call.
Hi, I am getting the following error:
Error: <stdin>: syntax error in line 11 scanning a quoted string (missing endquote? longer than 16384?)
String starting:"boost::proto::switch_<boost::phoenix::meta_grammar, boost::proto::tag_of<boost::
Traceback (most recent call last):
File "/usr/bin/gprof2dot", line 11, in <module>
load_entry_point('gprof2dot==2016.10.13', 'console_scripts', 'gprof2dot')()
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 3270, in main
dot.graph(profile, theme)
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 2998, in graph
tooltip = function.filename,
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 3046, in node
self.attr_list(attrs)
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 3071, in attr_list
self.id(value)
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 3084, in id
self.write(s)
File "/usr/lib/python3.6/site-packages/gprof2dot.py", line 3108, in write
self.fp.write(s)
BrokenPipeError: [Errno 32] Broken pipe
Profile input: prof.zip
for normal excutable file to see running time picture.
I can do like this:
gprof -p -q ./backtest | ~/gprof2dot/gprof2dot.py -n0 -e0 | dot -Tpng -o out.png
backtest
is my executable file.
but how if backtest need a config? for example, running command for backtest is:
./backtest a.cfg > a
i think:
gprof -p -q ./backtest a.cfg > b | ~/gprof2dot/gprof2dot.py -n0 -e0 | dot -Tpng -o out.png
this command is not good, how can i make it work
I'd really like to use your code, but there is no license. Please consider adding a license to your code. This site is a good source for understanding licences: http://choosealicense.com. An Apache or MIT license would be very useful.
Thanks.
The pypi source archive isn't including the LICENSE.txt
file. Would it be possible to add it? It is very helpful when packaging this for Linux distributions. Thank you.
I had issues with using gprof2dot without "-o" option (printing on stdout) in following setup:
Due to problems with UTF character, I wasn't able to print output on screen (or redirect it using Unix pipes):
test@8b8234c48f0b:/home/test$ gprof ./a.out | gprof2dot
digraph {
graph [fontname=Arial, nodesep=0.125, ranksep=0.25];
node [fontcolor=white, fontname=Arial, height=0, shape=box, style=filled, width=0];
edge [fontname=Arial];
1 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label=Traceback (most recent call last):
File "/usr/local/bin/gprof2dot", line 9, in <module>
load_entry_point('gprof2dot==2015.12.1', 'console_scripts', 'gprof2dot')()
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 3186, in main
dot.graph(profile, theme)
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 2922, in graph
tooltip = function.filename,
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 2970, in node
self.attr_list(attrs)
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 2995, in attr_list
self.id(value)
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 3008, in id
self.write(s)
File "/usr/local/lib/python3.5/dist-packages/gprof2dot.py", line 3032, in write
self.fp.write(s)
UnicodeEncodeError: 'ascii' codec can't encode character '\xd7' in position 31: ordinal not in range(128)
Here is the program I was profiling and compilation instructions:
test@8b8234c48f0b:/home/test$ cat hello.c
void b(){
int k;
for( k = 0 ; k < 1000 ; k++){
k*k*k;
}
}
void a() {
int j;
for( j = 0 ; j < 1000 ; j++){
j*j*j;
b();
}
}
int main(){
int i;
for( i = 0 ; i < 1000 ; i++ ){
a();
}
return 1;
}
test@8b8234c48f0b:/home/test$ gcc -pg hello.c
test@8b8234c48f0b:/home/test$ gprof ./a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
101.23 1.97 1.97 1000000 0.00 0.00 b
0.00 1.97 0.00 1000 0.00 1.97 a
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
Copyright (C) 2012-2015 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Call graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 0.51% of 1.97 seconds
index % time self children called name
1.97 0.00 1000000/1000000 a [2]
[1] 100.0 1.97 0.00 1000000 b [1]
-----------------------------------------------
0.00 1.97 1000/1000 main [3]
[2] 100.0 0.00 1.97 1000 a [2]
1.97 0.00 1000000/1000000 b [1]
-----------------------------------------------
<spontaneous>
[3] 100.0 0.00 1.97 main [3]
0.00 1.97 1000/1000 a [2]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines. The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function is in the table.
% time This is the percentage of the `total' time that was spent
in this function and its children. Note that due to
different viewpoints, functions excluded by options, etc,
these numbers will NOT add up to 100%.
self This is the total amount of time spent in this function.
children This is the total amount of time propagated into this
function by its children.
called This is the number of times the function was called.
If the function called itself recursively, the number
only includes non-recursive calls, and is followed by
a `+' and the number of recursive calls.
name The name of the current function. The index number is
printed after it. If the function is a member of a
cycle, the cycle number is printed between the
function's name and the index number.
For the function's parents, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the function into this parent.
children This is the amount of time that was propagated from
the function's children into this parent.
called This is the number of times this parent called the
function `/' the total number of times the function
was called. Recursive calls to the function are not
included in the number after the `/'.
name This is the name of the parent. The parent's index
number is printed after it. If the parent is a
member of a cycle, the cycle number is printed between
the name and the index number.
If the parents of the function cannot be determined, the word
`<spontaneous>' is printed in the `name' field, and all the other
fields are blank.
For the function's children, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the child into the function.
children This is the amount of time that was propagated from the
child's children to the function.
called This is the number of times the function called
this child `/' the total number of times the child
was called. Recursive calls by the child are not
listed in the number after the `/'.
name This is the name of the child. The child's index
number is printed after it. If the child is a
member of a cycle, the cycle number is printed
between the name and the index number.
If there are any cycles (circles) in the call graph, there is an
entry for the cycle-as-a-whole. This entry shows who called the
cycle (as parents) and the members of the cycle (as children.)
The `+' recursive calls entry shows the number of function calls that
were internal to the cycle, and the calls entry for each member shows,
for that member, how many times it was called from other members of
the cycle.
Copyright (C) 2012-2015 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Index by function name
[2] a [1] b
Lots of cases are, when simple module names are not enough to be able to differentiate them.
A simple switch and if does the trick, as you already have this here: https://github.com/jrfonseca/gprof2dot/blob/master/gprof2dot.py#L2729 (at least in case of cProfile)
The only change would be that the module would not have been extracted, so the filename goes straight forward.
For eg.:
2698 def get_function_name(self, key):
2699 filename, line, name = key
new if self._display_full_path:
new return "%s:%d:%s" % (filename, line, name)
2700 module = os.path.splitext(filename)[0]
2701 module = os.path.basename(module)
2702 return "%s:%d:%s" % (module, line, name)
Trying to execute gprof2dot by specifying -f perf option while the profile file is an output of gprof tool results to the following unclean message:
gprof2dot -f perf lsp-plugins-fx8350-profile.log
Traceback (most recent call last):
File "/usr/bin/gprof2dot", line 9, in <module>
load_entry_point('gprof2dot==2017.9.19', 'console_scripts', 'gprof2dot')()
File "/usr/lib/python3.4/site-packages/gprof2dot.py", line 3284, in main
profile = parser.parse()
File "/usr/lib/python3.4/site-packages/gprof2dot.py", line 1963, in parse
self.parse_event()
File "/usr/lib/python3.4/site-packages/gprof2dot.py", line 1995, in parse_event
callchain = self.parse_callchain()
File "/usr/lib/python3.4/site-packages/gprof2dot.py", line 2023, in parse_callchain
function = self.parse_call()
File "/usr/lib/python3.4/site-packages/gprof2dot.py", line 2037, in parse_call
assert mo
AssertionError
It looks like the last version released was
https://pypi.python.org/pypi/gprof2dot/2015.12.1
When you consider it is time maybe you can release a tagged version such as 0.0.1 so we can keep track of the code evolution.
Thank you!
When I use
python gprof2dot.py -n0.0001 -e0.0001 ./callgrind.out.28362 -f callgrind > out.dot && dot -Tpng out.dot -o out.pn
I see a lot of function in C runtime and Os system calls, I don't want to see them. Can I filter these things?
I have portion of a call graph that is defined by the union of two functions' call graphs.
For example:
foo():
bar()
baz()
asdf():
fn1234()
bar()
fn9321()
Is there a way to get a call graph of only this region?
Ideally, Id list a few functions I was interested in seeing, and a 'reach' and it would give the graph of all those functions, plus functions connected to them by at most 'reach' distance away in both the ancestors and descendants directions.
I dont think I can do this with the root/leaves since neither accept multiple arguments and specifying a function as both a root and leaf gives a graph of exactly that node.
I'm currently doing this by producing a limited call graph from these two functions as roots, then manually combining the two.
I'd be willing to write it myself and back contribute if you pointed me in the right direction.
By default when feeding oprofile data, it sums across all threads and presents a plot for that. However, in many multithreaded programs, this frequently points to the wrong place to look at for optimization. For example, in a recent test, we have many threads that wait either on condition variables or go to sleep for intervals, and other threads that are CPU bound. What happens in this case is that gprof2dot shows that most of the time is spent in the code to wait (60% of the time in nanosleep, for example).
It would be really useful in the case of oprofile and vtune (not sure if the other programs give the ability to report samples per thread) to generate one plot per thread, or to have a command line option that indicates which thread to process. In one of our use cases, we have up to 100 threads (or more, many are short lived), and would like to look at specific threads - the text output is too wide to be useful for viewing, which is why I started using gprof2dot.
The output from perf script has changed. Where it used to say
7f023a570d85 __libc_start_main (/lib64/libc-2.17.so)
Now (kernel version 4.8.12) it says
207d0 __libc_start_main+0xffff0082383ac0f0 (/lib64/libc-2.23.so)
gprof2dot.py needs an adjustment to avoid parsing the suffixed address as part of the function name.
Hello,
The picture I got after using the Gprof2Dot visualization tool did not show the details of the function call between the python program modules. But this information is what I need, what should I do. The png image I got is provided in the attachment. The command line parameters are as follows.
Looking forward to your answer.
There appears to be a problem dealing with functions that have non-ascii encodable names:
File "redacted.py", line XX, in main
produce_profiles(redacted)
dot_writer.graph(parsed_profile, gprof2dot.themes['color'])
File "/vagrant/venv/lib/python3.5/site-packages/gprof2dot-2017.9.19-py3.5.egg/gprof2dot.py", line 3037, in graph
File "/vagrant/venv/lib/python3.5/site-packages/gprof2dot-2017.9.19-py3.5.egg/gprof2dot.py", line 3085, in node
File "/vagrant/venv/lib/python3.5/site-packages/gprof2dot-2017.9.19-py3.5.egg/gprof2dot.py", line 3110, in attr_list
File "/vagrant/venv/lib/python3.5/site-packages/gprof2dot-2017.9.19-py3.5.egg/gprof2dot.py", line 3123, in id
File "/vagrant/venv/lib/python3.5/site-packages/gprof2dot-2017.9.19-py3.5.egg/gprof2dot.py", line 3147, in write
UnicodeEncodeError: 'ascii' codec can't encode character '\xd7' in position 51: ordinal not in range(128)
I am planning on submitting a Homebrew formula for easy installation on Mac, so long as @jrfonseca approves of the idea. I just wanted to check here first to make sure that you approved of the idea.
asdf.c:
#include <stdio.h>
#include <SDL2/SDL.h>
void a(void) {
long long sum = 0;
for (long long i = 0; i <= 100000000LL; i++)
sum += i;
printf("%lld\n", sum);
}
void b(void) { a(); }
void c(void) { b(); }
int main(void) { SDL_CreateWindow("a", 5, 5, 100, 100, 0); c(); return 0; }
commands:
gcc asdf.c -lSDL2
valgrind --tool=callgrind --callgrind-out-file=callgrind.out ./a.out
gprof2dot callgrind.out --format=callgrind --output=foo.dot
dot -Tpng foo.dot -o foo.png
resulting foo.png
:
I believe the problem is in gprof2dot, because kcachegrind callgrind.out
correctly shows that most of the time is spent in a()
:
Content of callgrind.out
(71191 lines): https://termbin.com/e2k8
If I comment out the call to SDL_CreateWindow()
, valgrind's brk segment overflow in thread #1
warning disappears, and I also get much better results:
Can gprof2dot understand sbcl output? I'm not too familiar with output formats, but the output below seems standard or pretty close to it/
I'm using the sbcl profiler for common lisp: http://www.sbcl.org/manual/#Deterministic-Profiler
Number of samples: 1892
Sample interval: 0.01 seconds
Total sampling time: 18.92 seconds
Number of cycles: 0
Sampled threads:
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37962" FINISHED values: NIL {1003563043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:35202" RUNNING {1005099783}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37898" FINISHED values: NIL {1003543043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37834" FINISHED values: NIL {1003503043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:55168" FINISHED values: NIL {100A2AA913}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37770" FINISHED values: NIL {10034FB043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37706" FINISHED values: NIL {1002B43043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37642" FINISHED values: NIL {100348B043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37570" FINISHED values: NIL {1002A63043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37506" FINISHED values: NIL {1002A53043}>
#<SB-THREAD:THREAD "auto-flush-thread" RUNNING {1002F8FDA3}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37428" FINISHED values: NIL {1002953043}>
#<SB-THREAD:THREAD "main thread" RUNNING {1001E06DD3}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37364" FINISHED values: NIL {10029B3043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37300" FINISHED values: NIL {1001F8B043}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37204" FINISHED values: NIL {1002AA5773}>
#<SB-THREAD:THREAD "hunchentoot-worker-127.0.0.1:37256" FINISHED values: NIL {1002A72B63}>
Callers
Total. Function
Count % Count % Callees
------------------------------------------------------------------------
256 13.5 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
256 13.5 256 13.5 "foreign function write" [1]
------------------------------------------------------------------------
30 1.6 SB-IMPL::SYSREAD-MAY-BLOCK-P [187]
131 6.9 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
161 8.5 161 8.5 "foreign function __poll" [2]
------------------------------------------------------------------------
1 0.1 STRING-EQUAL [3]
85 4.5 SB-KERNEL:%ASSOC-TEST [21]
74 3.9 85 4.5 STRING-EQUAL [3]
1 0.1 STRING-EQUAL [3]
11 0.6 STRING [18]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
1 0.1 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME) [188]
1 0.1 SEND-HUNCHENSOCKET-MESSAGE [153]
1 0.1 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
1 0.1 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
2 0.1 (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS)) [67]
4 0.2 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
1 0.1 SWANK::AUTO-FLUSH-LOOP [251]
5 0.3 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
10 0.5 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
3 0.2 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
2 0.1 JSON-RESP [127]
2 0.1 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
2 0.1 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
4 0.2 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
3 0.2 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
10 0.5 HUNCHENSOCKET::HANDLE-FRAME [47]
68 3.6 68 3.6 SB-VM::UNDEFINED-TRAMP [4]
------------------------------------------------------------------------
51 2.7 SB-IMPL::REFILL-INPUT-BUFFER [120]
51 2.7 51 2.7 (FLET #:CLEANUP-FUN-2093 :IN SB-IMPL::REFILL-INPUT-BUFFER) [5]
------------------------------------------------------------------------
2 0.1 SB-IMPL::%WRITE-STRING [29]
1 0.1 PPRINT-DISPATCH [6]
2 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
73 3.9 (LABELS SB-IMPL::PRINT-IT :IN SB-KERNEL:OUTPUT-OBJECT) [77]
34 1.8 77 4.1 PPRINT-DISPATCH [6]
2 0.1 SB-KERNEL:UB32-BASH-COPY [10]
1 0.1 "PPRINT-MACRO-CALL-P" [206]
1 0.1 PPRINT-DISPATCH [6]
5 0.3 SB-KERNEL:%COERCE-CALLABLE-TO-FUN [60]
13 0.7 "PPRINT-ARRAY-P" [27]
5 0.3 "PPRINT-DATA-LIST-P" [85]
4 0.2 SB-INT:COMMA-P [104]
5 0.3 CONSP [78]
8 0.4 "PPRINT-FUN-CALL-P" [56]
------------------------------------------------------------------------
4 0.2 SEND-HUNCHENSOCKET-MESSAGE [153]
6 0.3 JSON-RESP [127]
24 1.3 SB-INT:STRINGIFY-OBJECT [123]
34 1.8 34 1.8 SB-IMPL::%MAKE-STRING-OUTPUT-STREAM [7]
------------------------------------------------------------------------
2 0.1 SB-PCL::CHECK-MI-INITARGS [90]
4 0.2 JSON-RESP [127]
4 0.2 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
2 0.1 SEND-HUNCHENSOCKET-MESSAGE [153]
9 0.5 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
12 0.6 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
34 1.8 34 1.8 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
7 0.4 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
4 0.2 FLEXI-STREAMS:OCTETS-TO-STRING [155]
1 0.1 FLEXI-STREAMS:STRING-TO-OCTETS [121]
32 1.7 32 1.7 SB-C:RETURN-MULTIPLE [9]
------------------------------------------------------------------------
2 0.1 PPRINT-DISPATCH [6]
16 0.8 SB-IMPL::STRING-SOUT [24]
8 0.4 (LAMBDA (SB-IMPL::BUFFER SB-IMPL::FROM) :IN GET-OUTPUT-STREAM-STRING) [43]
26 1.4 26 1.4 SB-KERNEL:UB32-BASH-COPY [10]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
13 0.7 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
5 0.3 SB-PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN [169]
2 0.1 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
2 0.1 (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS)) [67]
26 1.4 26 1.4 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
------------------------------------------------------------------------
175 9.2 JSON-RESP [127]
192 10.1 SEND-HUNCHENSOCKET-MESSAGE [153]
25 1.3 367 19.4 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
1 0.1 MY-PACKAGE::GAME-MOVE-COL [200]
4 0.2 SB-VM::UNDEFINED-TRAMP [4]
2 0.1 MY-PACKAGE::GAME-MOVE-SHAPE-CODE [170]
2 0.1 MY-PACKAGE::GAME-MOVE-ROT [165]
4 0.2 (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-STD-READER-METHOD-FUNCTION) [74]
9 0.5 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
27 1.4 WRITE-CHAR [15]
177 9.4 PRINC-TO-STRING [40]
115 6.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER)) [124]
------------------------------------------------------------------------
1 0.1 READ-BYTE [61]
11 0.6 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
23 1.2 HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE [126]
22 1.2 35 1.8 SB-KERNEL:%MAKE-ARRAY [13]
5 0.3 SB-IMPL::VALIDATE-ARRAY-INITARGS [94]
2 0.1 SB-KERNEL:CLASSOID-CELL-TYPEP [174]
6 0.3 SB-IMPL::ALLOCATE-VECTOR-WITH-WIDETAG [71]
------------------------------------------------------------------------
35 1.8 FLEXI-STREAMS::ISO-8859-NAME-P [128]
21 1.1 37 2.0 SB-KERNEL:%FIND-POSITION [14]
4 0.2 CAR [100]
12 0.6 EQL [25]
------------------------------------------------------------------------
3 0.2 SB-IMPL::OUTPUT-INTEGER [102]
1 0.1 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
27 1.4 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
21 1.1 32 1.7 WRITE-CHAR [15]
1 0.1 (SB-PCL::EMF SB-GRAY:STREAM-WRITE-CHAR) [208]
10 0.5 SB-IMPL::STRING-OUCH [34]
------------------------------------------------------------------------
4 0.2 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
9 0.5 FLEXI-STREAMS:OCTETS-TO-STRING [155]
7 0.4 FLEXI-STREAMS:STRING-TO-OCTETS [121]
20 1.1 20 1.1 (LAMBDA (SB-PCL::.ARG0. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [16]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::READ-FRAME-FROM-CLIENT [163]
1 0.1 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
4 0.2 HUNCHENSOCKET::HANDLE-FRAME [47]
2 0.1 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
2 0.1 HUNCHENSOCKET::SEND-FRAME [152]
2 0.1 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
4 0.2 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
18 1.0 18 1.0 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
------------------------------------------------------------------------
2 0.1 SB-KERNEL:%ASSOC-TEST [21]
3 0.2 SB-KERNEL:TWO-ARG-STRING-EQUAL [72]
11 0.6 STRING-EQUAL [3]
17 0.9 17 0.9 STRING [18]
------------------------------------------------------------------------
2 0.1 SB-IMPL::REFILL-INPUT-BUFFER [120]
6 0.3 SB-IMPL::SYSREAD-MAY-BLOCK-P [187]
9 0.5 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
17 0.9 17 0.9 SB-UNIX:UNIX-SIMPLE-POLL [19]
------------------------------------------------------------------------
17 0.9 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
17 0.9 17 0.9 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [20]
------------------------------------------------------------------------
7 0.4 SB-PCL::CHECK-MI-INITARGS [90]
99 5.2 FLEXI-STREAMS:MAKE-EXTERNAL-FORMAT [39]
16 0.8 106 5.6 SB-KERNEL:%ASSOC-TEST [21]
2 0.1 STRING [18]
3 0.2 (LABELS SB-IMPL::EQUAL-AUX :IN EQUAL) [148]
85 4.5 STRING-EQUAL [3]
------------------------------------------------------------------------
8 0.4 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER)) [124]
7 0.4 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
15 0.8 15 0.8 WRITE-STRING [22]
------------------------------------------------------------------------
16 0.8 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
15 0.8 17 0.9 (SB-PCL::EMF SHARED-INITIALIZE) [23]
2 0.1 SB-PCL::CHECK-APPLICABLE-KEYWORDS [37]
------------------------------------------------------------------------
2 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
27 1.4 SB-IMPL::%WRITE-STRING [29]
13 0.7 29 1.5 SB-IMPL::STRING-SOUT [24]
16 0.8 SB-KERNEL:UB32-BASH-COPY [10]
------------------------------------------------------------------------
1 0.1 FLEXI-STREAMS::ISO-8859-NAME-P [128]
12 0.6 SB-KERNEL:%FIND-POSITION [14]
13 0.7 13 0.7 EQL [25]
------------------------------------------------------------------------
1 0.1 FIND [26]
29 1.5 FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME [68]
13 0.7 29 1.5 FIND [26]
1 0.1 FIND [26]
2 0.1 IDENTITY [168]
14 0.7 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
------------------------------------------------------------------------
13 0.7 PPRINT-DISPATCH [6]
13 0.7 13 0.7 "PPRINT-ARRAY-P" [27]
------------------------------------------------------------------------
2 0.1 SEND-HUNCHENSOCKET-MESSAGE [153]
3 0.2 JSON-RESP [127]
1 0.1 GET-OUTPUT-STREAM-STRING [28]
39 2.1 SB-INT:STRINGIFY-OBJECT [123]
12 0.6 44 2.3 GET-OUTPUT-STREAM-STRING [28]
1 0.1 GET-OUTPUT-STREAM-STRING [28]
2 0.1 (LAMBDA (SB-IMPL::BUFFER SB-IMPL::FROM) :IN GET-OUTPUT-STREAM-STRING) [43]
3 0.2 SB-IMPL::LIST-NREVERSE [139]
27 1.4 (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING) [80]
------------------------------------------------------------------------
25 1.3 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
16 0.8 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER)) [124]
12 0.6 41 2.2 SB-IMPL::%WRITE-STRING [29]
2 0.1 PPRINT-DISPATCH [6]
27 1.4 SB-IMPL::STRING-SOUT [24]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
84 4.4 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
12 0.6 84 4.4 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
1 0.1 SB-KERNEL:%COERCE-CALLABLE-TO-FUN [60]
2 0.1 (LAMBDA (SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION) [180]
2 0.1 (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) [173]
13 0.7 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
7 0.4 SB-PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN [169]
4 0.2 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
1 0.1 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
10 0.5 SB-VM::UNDEFINED-TRAMP [4]
5 0.3 SB-PCL::SLOT-BOUNDP-USING-CLASS-DFUN [91]
3 0.2 SB-INT:MEMQ [142]
11 0.6 (SB-PCL::EMF SB-MOP:CLASS-SLOTS) [58]
5 0.3 (LAMBDA (SB-PCL::NV SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION) [84]
5 0.3 CLASS-OF [79]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::MASK-UNMASK [190]
4 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
2 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-OCTETS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [89]
2 0.1 GAME-EXC-MOVE [130]
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
12 0.6 12 0.6 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
------------------------------------------------------------------------
4 0.2 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
3 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
4 0.2 HUNCHENSOCKET::HANDLE-FRAME [47]
11 0.6 11 0.6 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [32]
------------------------------------------------------------------------
2 0.1 SEND-HUNCHENSOCKET-MESSAGE [153]
2 0.1 (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS)) [67]
7 0.4 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
11 0.6 11 0.6 SB-KERNEL:CLASSOID-TYPEP [33]
------------------------------------------------------------------------
10 0.5 WRITE-CHAR [15]
11 0.6 11 0.6 SB-IMPL::STRING-OUCH [34]
------------------------------------------------------------------------
1 0.1 SB-IMPL::BUFFER-OUTPUT [82]
10 0.5 (FLET SB-IMPL::COPY-TO-BUFFER :IN SB-IMPL::BUFFER-OUTPUT) [229]
11 0.6 11 0.6 SB-KERNEL:COPY-UB8-TO-SYSTEM-AREA [35]
------------------------------------------------------------------------
24 1.3 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
11 0.6 24 1.3 FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME [36]
1 0.1 FLEXI-STREAMS::KOI8-R-NAME-P [88]
2 0.1 FLEXI-STREAMS::CODE-PAGE-NAME-P [178]
10 0.5 FLEXI-STREAMS::ISO-8859-NAME-P [128]
------------------------------------------------------------------------
1 0.1 (SB-PCL::EMF INITIALIZE-INSTANCE) [87]
2 0.1 (SB-PCL::EMF SHARED-INITIALIZE) [23]
6 0.3 (SB-PCL::EMF MAKE-INSTANCE) [38]
11 0.6 11 0.6 SB-PCL::CHECK-APPLICABLE-KEYWORDS [37]
------------------------------------------------------------------------
6 0.3 FLEXI-STREAMS:STRING-TO-OCTETS [121]
7 0.4 FLEXI-STREAMS:OCTETS-TO-STRING [155]
11 0.6 17 0.9 (SB-PCL::EMF MAKE-INSTANCE) [38]
6 0.3 SB-PCL::CHECK-APPLICABLE-KEYWORDS [37]
------------------------------------------------------------------------
56 3.0 FLEXI-STREAMS:OCTETS-TO-STRING [155]
53 2.8 FLEXI-STREAMS:STRING-TO-OCTETS [121]
10 0.5 109 5.8 FLEXI-STREAMS:MAKE-EXTERNAL-FORMAT [39]
99 5.2 SB-KERNEL:%ASSOC-TEST [21]
------------------------------------------------------------------------
177 9.4 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
88 4.7 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER)) [124]
10 0.5 265 14.0 PRINC-TO-STRING [40]
255 13.5 SB-INT:STRINGIFY-OBJECT [123]
------------------------------------------------------------------------
29 1.5 READ-SEQUENCE [76]
10 0.5 29 1.5 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
1 0.1 SB-IMPL::ANSI-STREAM-READ-N-BYTES [205]
10 0.5 SB-IMPL::FD-STREAM-READ-N-BYTES [45]
4 0.2 "foreign function memcpy" [112]
1 0.1 LENGTH [132]
------------------------------------------------------------------------
2 0.1 HUNCHENSOCKET::HANDLE-FRAME [47]
79 4.2 FLEXI-STREAMS:STRING-TO-OCTETS [121]
132 7.0 FLEXI-STREAMS:OCTETS-TO-STRING [155]
10 0.5 213 11.3 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
1 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
1 0.1 (SB-PCL::FAST-METHOD INITIALIZE-INSTANCE (SB-PCL::SLOT-OBJECT)) [209]
1 0.1 (SB-PCL::FAST-METHOD SB-MOP:CLASS-DEFAULT-INITARGS (SB-PCL::SLOT-CLASS)) [207]
2 0.1 SB-PCL::PLIST-VALUE [166]
1 0.1 SB-VM::FILL-VECTOR/T [201]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [16]
7 0.4 SB-C:RETURN-MULTIPLE [9]
8 0.4 SB-PCL::MAYBE-CALL-CTOR [237]
3 0.2 SB-VM::UNDEFINED-TRAMP [4]
31 1.6 SB-PCL::CHECK-MI-INITARGS [90]
16 0.8 (SB-PCL::EMF SHARED-INITIALIZE) [23]
5 0.3 (SB-PCL::EMF INITIALIZE-INSTANCE) [87]
12 0.6 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
3 0.2 SB-PCL::ALLOCATE-STANDARD-INSTANCE [159]
10 0.5 (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS)) [67]
5 0.3 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [81]
7 0.4 SB-KERNEL:CLASSOID-TYPEP [33]
84 4.4 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
------------------------------------------------------------------------
2 0.1 GET-OUTPUT-STREAM-STRING [28]
16 0.8 (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING) [80]
10 0.5 18 1.0 (LAMBDA (SB-IMPL::BUFFER SB-IMPL::FROM) :IN GET-OUTPUT-STREAM-STRING) [43]
8 0.4 SB-KERNEL:UB32-BASH-COPY [10]
------------------------------------------------------------------------
10 0.5 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
10 0.5 10 0.5 SB-IMPL::OUTPUT-VECTOR [44]
------------------------------------------------------------------------
10 0.5 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
10 0.5 10 0.5 SB-IMPL::FD-STREAM-READ-N-BYTES [45]
------------------------------------------------------------------------
1861 98.4 SB-THREAD::CALL-WITH-MUTEX [151]
9 0.5 1864 98.5 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
1 0.1 SB-THREAD:CONDITION-WAIT [266]
35 1.8 HUNCHENSOCKET::WRITE-FRAME [191]
1 0.1 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME) [188]
1545 81.7 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [224]
273 14.4 FORCE-OUTPUT [118]
------------------------------------------------------------------------
1494 79.0 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
9 0.5 1494 79.0 HUNCHENSOCKET::HANDLE-FRAME [47]
1 0.1 ASH [113]
1 0.1 (FLET #:CLEANUP-FUN-500 :IN HUNCHENSOCKET::HANDLE-FRAME) [204]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [116]
4 0.2 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
2 0.1 SB-IMPL::LIST-REVERSE [176]
2 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
24 1.3 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
15 0.8 CONCATENATE [193]
20 1.1 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
10 0.5 SB-VM::UNDEFINED-TRAMP [4]
14 0.7 HUNCHENSOCKET::MASK-UNMASK [190]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [32]
23 1.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
287 15.2 FLEXI-STREAMS:OCTETS-TO-STRING [155]
1064 56.2 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
------------------------------------------------------------------------
9 0.5 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
9 0.5 9 0.5 (SB-PCL::FAST-METHOD PRINT-OBJECT (VECTOR T)) [48]
------------------------------------------------------------------------
55 2.9 FLEXI-STREAMS:OCTETS-TO-STRING [155]
47 2.5 FLEXI-STREAMS:STRING-TO-OCTETS [121]
9 0.5 102 5.4 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
4 0.2 FLEXI-STREAMS::KOI8-R-NAME-P [88]
24 1.3 FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME [36]
34 1.8 FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME [68]
29 1.5 FLEXI-STREAMS::ISO-8859-NAME-P [128]
------------------------------------------------------------------------
41 2.2 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
9 0.5 41 2.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
1 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF CHARACTER) [53]
4 0.2 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
11 0.6 SB-KERNEL:%MAKE-ARRAY [13]
15 0.8 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-OCTETS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [89]
------------------------------------------------------------------------
1 0.1 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
14 0.7 SB-IMPL::OUTPUT-INTEGER [102]
9 0.5 14 0.7 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
1 0.1 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
1 0.1 WRITE-CHAR [15]
4 0.2 TRUNCATE [111]
------------------------------------------------------------------------
20 1.1 JSON-RESP [127]
9 0.5 20 1.1 (SB-PCL::EMF (SETF HUNCHENTOOT:HEADER-OUT)) [52]
2 0.1 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME) [188]
9 0.5 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
8 0.4 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-OCTETS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [89]
9 0.5 9 0.5 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF CHARACTER) [53]
------------------------------------------------------------------------
276 14.6 READ-BYTE [61]
8 0.4 276 14.6 SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE [54]
1 0.1 ERROR [282]
1 0.1 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
265 14.0 SB-IMPL::REFILL-INPUT-BUFFER [120]
------------------------------------------------------------------------
352 18.6 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
8 0.4 352 18.6 HUNCHENSOCKET::READ-FRAME [55]
6 0.3 (LAMBDA (SB-PCL::|.P0.| SB-PCL::|.P1.| SB-PCL::|.P2.| SB-PCL::|.P3.|)) [75]
3 0.2 HUNCHENSOCKET::CONTROL-FRAME-P [140]
49 2.6 HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE [126]
284 15.0 READ-BYTE [61]
------------------------------------------------------------------------
8 0.4 PPRINT-DISPATCH [6]
8 0.4 8 0.4 "PPRINT-FUN-CALL-P" [56]
------------------------------------------------------------------------
1 0.1 FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME [68]
1 0.1 (SB-PCL::EMF SB-MOP:CLASS-SLOTS) [58]
14 0.7 FIND [26]
8 0.4 16 0.8 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
7 0.4 SB-KERNEL:TWO-ARG-STRING-EQUAL [72]
------------------------------------------------------------------------
11 0.6 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
8 0.4 11 0.6 (SB-PCL::EMF SB-MOP:CLASS-SLOTS) [58]
1 0.1 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
2 0.1 (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-STD-READER-METHOD-FUNCTION) [74]
------------------------------------------------------------------------
8 0.4 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
8 0.4 8 0.4 REDUCE [59]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
5 0.3 PPRINT-DISPATCH [6]
2 0.1 (LABELS SB-IMPL::PRINT-IT :IN SB-KERNEL:OUTPUT-OBJECT) [77]
8 0.4 8 0.4 SB-KERNEL:%COERCE-CALLABLE-TO-FUN [60]
------------------------------------------------------------------------
284 15.0 HUNCHENSOCKET::READ-FRAME [55]
7 0.4 284 15.0 READ-BYTE [61]
1 0.1 SB-KERNEL:%MAKE-ARRAY [13]
276 14.6 SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE [54]
------------------------------------------------------------------------
1 0.1 CHUNGA:READ-HTTP-HEADERS [256]
27 1.4 HUNCHENSOCKET::WRITE-FRAME [191]
7 0.4 28 1.5 WRITE-SEQUENCE [62]
21 1.1 SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE [133]
------------------------------------------------------------------------
7 0.4 SB-PCL::CHECK-MI-INITARGS [90]
7 0.4 7 0.4 SB-PCL::PLIST-KEYS [63]
------------------------------------------------------------------------
7 0.4 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
7 0.4 7 0.4 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.)) [64]
------------------------------------------------------------------------
10 0.5 SB-PCL::CHECK-MI-INITARGS [90]
1 0.1 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
7 0.4 10 0.5 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
1 0.1 (SB-PCL::FAST-METHOD SB-MOP:CLASS-PROTOTYPE :BEFORE (T)) [198]
1 0.1 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
------------------------------------------------------------------------
6 0.3 SB-PCL::PLIST-VALUE [166]
7 0.4 7 0.4 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [66]
------------------------------------------------------------------------
10 0.5 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
6 0.3 12 0.6 (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS)) [67]
2 0.1 SB-VM::UNDEFINED-TRAMP [4]
2 0.1 SB-KERNEL:CLASSOID-TYPEP [33]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
------------------------------------------------------------------------
1 0.1 FLEXI-STREAMS:STRING-TO-OCTETS [121]
34 1.8 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
6 0.3 36 1.9 FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME [68]
1 0.1 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
29 1.5 FIND [26]
------------------------------------------------------------------------
11 0.6 SB-KERNEL:%CONCATENATE-TO-SIMPLE-VECTOR [135]
6 0.3 11 0.6 REPLACE [69]
1 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET T) [212]
2 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF [164]
2 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8)) [157]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
4 0.2 JSON-RESP [127]
6 0.3 6 0.3 (SETF HUNCHENTOOT:RETURN-CODE*) [70]
------------------------------------------------------------------------
6 0.3 SB-KERNEL:%MAKE-ARRAY [13]
6 0.3 6 0.3 SB-IMPL::ALLOCATE-VECTOR-WITH-WIDETAG [71]
------------------------------------------------------------------------
7 0.4 (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME) [57]
6 0.3 9 0.5 SB-KERNEL:TWO-ARG-STRING-EQUAL [72]
3 0.2 STRING [18]
------------------------------------------------------------------------
5 0.3 FORCE-OUTPUT [118]
6 0.3 6 0.3 SB-IMPL::FD-STREAM-MISC-ROUTINE [73]
------------------------------------------------------------------------
2 0.1 (SB-PCL::EMF SB-MOP:CLASS-SLOTS) [58]
4 0.2 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
6 0.3 6 0.3 (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-STD-READER-METHOD-FUNCTION) [74]
------------------------------------------------------------------------
6 0.3 HUNCHENSOCKET::READ-FRAME [55]
6 0.3 6 0.3 (LAMBDA (SB-PCL::|.P0.| SB-PCL::|.P1.| SB-PCL::|.P2.| SB-PCL::|.P3.|)) [75]
------------------------------------------------------------------------
36 1.9 HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE [126]
5 0.3 36 1.9 READ-SEQUENCE [76]
2 0.1 SB-KERNEL:SEQUENCEP [181]
29 1.5 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
------------------------------------------------------------------------
80 4.2 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
5 0.3 80 4.2 (LABELS SB-IMPL::PRINT-IT :IN SB-KERNEL:OUTPUT-OBJECT) [77]
2 0.1 SB-KERNEL:%COERCE-CALLABLE-TO-FUN [60]
73 3.9 PPRINT-DISPATCH [6]
------------------------------------------------------------------------
5 0.3 PPRINT-DISPATCH [6]
5 0.3 5 0.3 CONSP [78]
------------------------------------------------------------------------
5 0.3 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
5 0.3 5 0.3 CLASS-OF [79]
------------------------------------------------------------------------
27 1.4 GET-OUTPUT-STREAM-STRING [28]
5 0.3 27 1.4 (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING) [80]
2 0.1 SB-VM::GENERIC-+ [99]
4 0.2 SB-KERNEL:LIST-FILL* [109]
16 0.8 (LAMBDA (SB-IMPL::BUFFER SB-IMPL::FROM) :IN GET-OUTPUT-STREAM-STRING) [43]
------------------------------------------------------------------------
5 0.3 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
5 0.3 5 0.3 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [81]
------------------------------------------------------------------------
1 0.1 SB-IMPL::BUFFER-OUTPUT [82]
16 0.8 SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE [133]
5 0.3 16 0.8 SB-IMPL::BUFFER-OUTPUT [82]
1 0.1 SB-IMPL::BUFFER-OUTPUT [82]
1 0.1 SB-KERNEL:COPY-UB8-TO-SYSTEM-AREA [35]
10 0.5 (FLET SB-IMPL::COPY-TO-BUFFER :IN SB-IMPL::BUFFER-OUTPUT) [229]
------------------------------------------------------------------------
8 0.4 SB-SYS:DECODE-TIMEOUT [131]
5 0.3 8 0.4 GET-INTERNAL-REAL-TIME [83]
3 0.2 "foreign function __vdso_gettimeofday" [101]
------------------------------------------------------------------------
5 0.3 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
5 0.3 5 0.3 (LAMBDA (SB-PCL::NV SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION) [84]
------------------------------------------------------------------------
5 0.3 PPRINT-DISPATCH [6]
5 0.3 5 0.3 "PPRINT-DATA-LIST-P" [85]
------------------------------------------------------------------------
12 0.6 (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL)) [189]
5 0.3 13 0.7 FIND-CLASS [86]
8 0.4 SB-KERNEL:FIND-CLASSOID-CELL [105]
------------------------------------------------------------------------
5 0.3 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
5 0.3 6 0.3 (SB-PCL::EMF INITIALIZE-INSTANCE) [87]
1 0.1 SB-PCL::CHECK-APPLICABLE-KEYWORDS [37]
------------------------------------------------------------------------
1 0.1 FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME [36]
4 0.2 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
5 0.3 5 0.3 FLEXI-STREAMS::KOI8-R-NAME-P [88]
------------------------------------------------------------------------
15 0.8 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
5 0.3 15 0.8 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-OCTETS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [89]
2 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
8 0.4 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF CHARACTER) [53]
------------------------------------------------------------------------
31 1.6 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
5 0.3 31 1.6 SB-PCL::CHECK-MI-INITARGS [90]
7 0.4 SB-KERNEL:%ASSOC-TEST [21]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
10 0.5 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
7 0.4 SB-PCL::PLIST-KEYS [63]
------------------------------------------------------------------------
5 0.3 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
5 0.3 5 0.3 SB-PCL::SLOT-BOUNDP-USING-CLASS-DFUN [91]
------------------------------------------------------------------------
4 0.2 JSON-RESP [127]
1 0.1 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
5 0.3 5 0.3 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [92]
------------------------------------------------------------------------
5 0.3 SB-SYS:DECODE-TIMEOUT [131]
5 0.3 5 0.3 SB-KERNEL:TWO-ARG-* [93]
------------------------------------------------------------------------
5 0.3 SB-KERNEL:%MAKE-ARRAY [13]
5 0.3 5 0.3 SB-IMPL::VALIDATE-ARRAY-INITARGS [94]
------------------------------------------------------------------------
2 0.1 FLEXI-STREAMS:OCTETS-TO-STRING [155]
3 0.2 FLEXI-STREAMS:STRING-TO-OCTETS [121]
5 0.3 5 0.3 FLEXI-STREAMS::MAYBE-CONVERT-EXTERNAL-FORMAT [95]
------------------------------------------------------------------------
1 0.1 SB-IMPL::FINISH-FD-STREAM-OUTPUT [263]
266 14.1 FORCE-OUTPUT [118]
4 0.2 267 14.1 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
2 0.1 (FLET SB-INT:%WRITE :IN SB-UNIX:UNIX-WRITE) [183]
2 0.1 SB-UNIX:UNIX-WRITE [177]
256 13.5 "foreign function write" [1]
------------------------------------------------------------------------
23 1.2 HUNCHENSOCKET::HANDLE-FRAME [47]
4 0.2 23 1.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
1 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF T) [175]
3 0.2 ASH [113]
10 0.5 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
1 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
3 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [32]
------------------------------------------------------------------------
7 0.4 SB-VM::GENERIC-+ [99]
4 0.2 7 0.4 SB-KERNEL:TWO-ARG-> [98]
2 0.1 SB-KERNEL:%UNARY-TRUNCATE/SINGLE-FLOAT [185]
1 0.1 SB-EXT:FLOAT-INFINITY-P [147]
------------------------------------------------------------------------
1 0.1 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
2 0.1 (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING) [80]
12 0.6 GAME-EXC-MOVE [130]
4 0.2 15 0.8 SB-VM::GENERIC-+ [99]
2 0.1 SB-KERNEL:TWO-ARG-= [186]
2 0.1 PARSE-INTEGER [171]
7 0.4 SB-KERNEL:TWO-ARG-> [98]
------------------------------------------------------------------------
4 0.2 SB-KERNEL:%FIND-POSITION [14]
4 0.2 4 0.2 CAR [100]
------------------------------------------------------------------------
3 0.2 GET-INTERNAL-REAL-TIME [83]
2 0.1 SB-SYS:DECODE-TIMEOUT [131]
4 0.2 5 0.3 "foreign function __vdso_gettimeofday" [101]
------------------------------------------------------------------------
23 1.2 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
4 0.2 23 1.2 SB-IMPL::OUTPUT-INTEGER [102]
3 0.2 WRITE-CHAR [15]
2 0.1 SB-IMPL::%OUTPUT-INTEGER-IN-BASE [145]
14 0.7 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
------------------------------------------------------------------------
4 0.2 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
4 0.2 4 0.2 SB-KERNEL:%ASSOC-EQ [103]
------------------------------------------------------------------------
4 0.2 PPRINT-DISPATCH [6]
4 0.2 4 0.2 SB-INT:COMMA-P [104]
------------------------------------------------------------------------
8 0.4 FIND-CLASS [86]
4 0.2 8 0.4 SB-KERNEL:FIND-CLASSOID-CELL [105]
4 0.2 SB-C::GET-INFO-VALUE [143]
------------------------------------------------------------------------
4 0.2 HUNCHENSOCKET::MASK-UNMASK [190]
4 0.2 4 0.2 SB-KERNEL:EXTENDED-SEQUENCE-P [106]
------------------------------------------------------------------------
4 0.2 SB-INT:STRINGIFY-OBJECT [123]
4 0.2 4 0.2 SB-KERNEL:OUTPUT-OBJECT [107]
------------------------------------------------------------------------
4 0.2 JSON-RESP [127]
4 0.2 4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.)) [108]
------------------------------------------------------------------------
1 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
4 0.2 (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING) [80]
4 0.2 5 0.3 SB-KERNEL:LIST-FILL* [109]
1 0.1 SB-IMPL::%OUTPUT-INTEGER-IN-BASE [145]
------------------------------------------------------------------------
4 0.2 SB-SYS:DECODE-TIMEOUT [131]
4 0.2 4 0.2 SB-KERNEL:%UNARY-TRUNCATE [110]
------------------------------------------------------------------------
4 0.2 SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE [51]
4 0.2 4 0.2 TRUNCATE [111]
------------------------------------------------------------------------
4 0.2 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
4 0.2 4 0.2 "foreign function memcpy" [112]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::HANDLE-FRAME [47]
3 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
4 0.2 4 0.2 ASH [113]
------------------------------------------------------------------------
3 0.2 PARSE-INTEGER [171]
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
4 0.2 4 0.2 SB-IMPL::GET-CAT-ENTRY [114]
------------------------------------------------------------------------
4 0.2 HUNCHENSOCKET::MASK-UNMASK [190]
4 0.2 4 0.2 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8)) [115]
------------------------------------------------------------------------
4 0.2 HUNCHENSOCKET::HANDLE-FRAME [47]
4 0.2 4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [116]
------------------------------------------------------------------------
4 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
4 0.2 4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [117]
------------------------------------------------------------------------
1 0.1 SWANK::AUTO-FLUSH-LOOP [251]
1 0.1 INIT-SESSION [230]
273 14.4 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
3 0.2 275 14.5 FORCE-OUTPUT [118]
1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FORCE-OUTPUT :AROUND (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [255]
5 0.3 SB-IMPL::FD-STREAM-MISC-ROUTINE [73]
266 14.1 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
1064 56.2 HUNCHENSOCKET::HANDLE-FRAME [47]
3 0.2 1064 56.2 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
2 0.1 (SETF HUNCHENTOOT:RETURN-CODE*) [70]
1 0.1 SB-C:RETURN-MULTIPLE [9]
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
7 0.4 PARSE-INTEGER [171]
3 0.2 SB-VM::UNDEFINED-TRAMP [4]
23 1.2 GAME-EXC-MOVE [130]
4 0.2 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
227 12.0 JSON-RESP [127]
793 41.9 SEND-HUNCHENSOCKET-MESSAGE [153]
------------------------------------------------------------------------
1 0.1 SB-IMPL::REFILL-INPUT-BUFFER [120]
1 0.1 SB-IMPL::INPUT-CHAR/UTF-8 [238]
265 14.0 SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE [54]
3 0.2 266 14.1 SB-IMPL::REFILL-INPUT-BUFFER [120]
1 0.1 SB-IMPL::REFILL-INPUT-BUFFER [120]
2 0.1 SB-UNIX:UNIX-SIMPLE-POLL [19]
51 2.7 (FLET #:CLEANUP-FUN-2093 :IN SB-IMPL::REFILL-INPUT-BUFFER) [5]
167 8.8 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
43 2.3 SB-IMPL::SYSREAD-MAY-BLOCK-P [187]
------------------------------------------------------------------------
207 10.9 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
3 0.2 207 10.9 FLEXI-STREAMS:STRING-TO-OCTETS [121]
3 0.2 FLEXI-STREAMS::MAYBE-CONVERT-EXTERNAL-FORMAT [95]
1 0.1 FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME [68]
6 0.3 (SB-PCL::EMF MAKE-INSTANCE) [38]
5 0.3 (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL)) [189]
1 0.1 SB-C:RETURN-MULTIPLE [9]
47 2.5 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
79 4.2 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
7 0.4 (LAMBDA (SB-PCL::.ARG0. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [16]
53 2.8 FLEXI-STREAMS:MAKE-EXTERNAL-FORMAT [39]
------------------------------------------------------------------------
259 13.7 SEND-HUNCHENSOCKET-MESSAGE [153]
3 0.2 259 13.7 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [32]
2 0.1 SB-VM::UNDEFINED-TRAMP [4]
41 2.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [50]
207 10.9 FLEXI-STREAMS:STRING-TO-OCTETS [121]
------------------------------------------------------------------------
255 13.5 PRINC-TO-STRING [40]
3 0.2 255 13.5 SB-INT:STRINGIFY-OBJECT [123]
4 0.2 SB-KERNEL:OUTPUT-OBJECT [107]
24 1.3 SB-IMPL::%MAKE-STRING-OUTPUT-STREAM [7]
185 9.8 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
39 2.1 GET-OUTPUT-STREAM-STRING [28]
------------------------------------------------------------------------
115 6.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
3 0.2 115 6.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER)) [124]
8 0.4 WRITE-STRING [22]
16 0.8 SB-IMPL::%WRITE-STRING [29]
88 4.7 PRINC-TO-STRING [40]
------------------------------------------------------------------------
1 0.1 SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE [54]
167 8.8 SB-IMPL::REFILL-INPUT-BUFFER [120]
3 0.2 168 8.9 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
1 0.1 SB-VM::GENERIC-+ [99]
9 0.5 SB-UNIX:UNIX-SIMPLE-POLL [19]
23 1.2 SB-SYS:DECODE-TIMEOUT [131]
131 6.9 "foreign function __poll" [2]
------------------------------------------------------------------------
13 0.7 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
49 2.6 HUNCHENSOCKET::READ-FRAME [55]
3 0.2 62 3.3 HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE [126]
23 1.2 SB-KERNEL:%MAKE-ARRAY [13]
36 1.9 READ-SEQUENCE [76]
------------------------------------------------------------------------
227 12.0 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
3 0.2 227 12.0 JSON-RESP [127]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [92]
3 0.2 GET-OUTPUT-STREAM-STRING [28]
4 0.2 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
2 0.1 SB-VM::UNDEFINED-TRAMP [4]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.)) [108]
4 0.2 (SETF HUNCHENTOOT:RETURN-CODE*) [70]
2 0.1 (SETF HUNCHENTOOT:CONTENT-TYPE*) [160]
6 0.3 SB-IMPL::%MAKE-STRING-OUTPUT-STREAM [7]
20 1.1 (SB-PCL::EMF (SETF HUNCHENTOOT:HEADER-OUT)) [52]
175 9.2 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
------------------------------------------------------------------------
10 0.5 FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME [36]
29 1.5 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
3 0.2 39 2.1 FLEXI-STREAMS::ISO-8859-NAME-P [128]
1 0.1 EQL [25]
35 1.8 SB-KERNEL:%FIND-POSITION [14]
------------------------------------------------------------------------
3 0.2 (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL)) [189]
3 0.2 3 0.2 SB-PCL::FIND-CLASS-FROM-CELL [129]
------------------------------------------------------------------------
23 1.2 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
3 0.2 23 1.2 GAME-EXC-MOVE [130]
1 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF T) [175]
3 0.2 (LAMBDA (SB-KERNEL::CACHE SB-KERNEL::OBJECT) :IN SB-KERNEL::CACHED-TYPEP) [149]
2 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
1 0.1 SB-IMPL::SLOW-HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [194]
1 0.1 LENGTH [132]
12 0.6 SB-VM::GENERIC-+ [99]
------------------------------------------------------------------------
23 1.2 SB-SYS:WAIT-UNTIL-FD-USABLE [125]
3 0.2 23 1.2 SB-SYS:DECODE-TIMEOUT [131]
1 0.1 "foreign function sb_gettimeofday" [211]
5 0.3 SB-KERNEL:TWO-ARG-* [93]
4 0.2 SB-KERNEL:%UNARY-TRUNCATE [110]
8 0.4 GET-INTERNAL-REAL-TIME [83]
2 0.1 "foreign function __vdso_gettimeofday" [101]
------------------------------------------------------------------------
1 0.1 SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE [133]
1 0.1 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
1 0.1 GAME-EXC-MOVE [130]
3 0.2 3 0.2 LENGTH [132]
------------------------------------------------------------------------
21 1.1 WRITE-SEQUENCE [62]
3 0.2 21 1.1 SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE [133]
1 0.1 LENGTH [132]
1 0.1 SB-IMPL::STRING-OUT-MISC [203]
16 0.8 SB-IMPL::BUFFER-OUTPUT [82]
------------------------------------------------------------------------
3 0.2 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
3 0.2 3 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [134]
------------------------------------------------------------------------
14 0.7 CONCATENATE [193]
3 0.2 14 0.7 SB-KERNEL:%CONCATENATE-TO-SIMPLE-VECTOR [135]
11 0.6 REPLACE [69]
------------------------------------------------------------------------
1 0.1 SB-PCL::ALLOCATE-STANDARD-INSTANCE [159]
3 0.2 3 0.2 SB-PCL::%MAKE-STANDARD-INSTANCE [136]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
1 0.1 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME) [188]
3 0.2 3 0.2 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [137]
------------------------------------------------------------------------
7 0.4 HUNCHENSOCKET::WRITE-FRAME [191]
3 0.2 7 0.4 WRITE-BYTE [138]
3 0.2 SB-IMPL::OUTPUT-UNSIGNED-BYTE-FULL-BUFFERED [162]
------------------------------------------------------------------------
3 0.2 GET-OUTPUT-STREAM-STRING [28]
3 0.2 3 0.2 SB-IMPL::LIST-NREVERSE [139]
------------------------------------------------------------------------
3 0.2 HUNCHENSOCKET::READ-FRAME [55]
3 0.2 3 0.2 HUNCHENSOCKET::CONTROL-FRAME-P [140]
------------------------------------------------------------------------
24 1.3 HUNCHENSOCKET::HANDLE-FRAME [47]
3 0.2 24 1.3 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
2 0.1 (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.)) [184]
2 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:CHECK-MESSAGE (HUNCHENSOCKET:WEBSOCKET-RESOURCE HUNCHENSOCKET:WEBSOCKET-CLIENT T T T)) [172]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
8 0.4 REDUCE [59]
7 0.4 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.)) [64]
------------------------------------------------------------------------
3 0.2 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
3 0.2 3 0.2 SB-INT:MEMQ [142]
------------------------------------------------------------------------
4 0.2 SB-KERNEL:FIND-CLASSOID-CELL [105]
3 0.2 4 0.2 SB-C::GET-INFO-VALUE [143]
1 0.1 SB-C::PACKED-INFO-VALUE-INDEX [199]
------------------------------------------------------------------------
3 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
3 0.2 3 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::CHECK-END (T T T T)) [144]
------------------------------------------------------------------------
2 0.1 SB-IMPL::OUTPUT-INTEGER [102]
1 0.1 SB-KERNEL:LIST-FILL* [109]
3 0.2 3 0.2 SB-IMPL::%OUTPUT-INTEGER-IN-BASE [145]
------------------------------------------------------------------------
3 0.2 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
3 0.2 3 0.2 SB-KERNEL:OUTPUT-UGLY-OBJECT [146]
------------------------------------------------------------------------
2 0.1 PARSE-INTEGER [171]
1 0.1 SB-KERNEL:TWO-ARG-> [98]
3 0.2 3 0.2 SB-EXT:FLOAT-INFINITY-P [147]
------------------------------------------------------------------------
3 0.2 SB-KERNEL:%ASSOC-TEST [21]
3 0.2 3 0.2 (LABELS SB-IMPL::EQUAL-AUX :IN EQUAL) [148]
------------------------------------------------------------------------
3 0.2 GAME-EXC-MOVE [130]
3 0.2 3 0.2 (LAMBDA (SB-KERNEL::CACHE SB-KERNEL::OBJECT) :IN SB-KERNEL::CACHED-TYPEP) [149]
------------------------------------------------------------------------
3 0.2 3 0.2 (SB-PCL::FAST-METHOD SB-MOP:CLASS-SLOTS :BEFORE (SB-PCL::SLOT-CLASS)) [150]
------------------------------------------------------------------------
1 0.1 (FLET SWANK/BACKEND:RECEIVE-IF :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [267]
1864 98.5 SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE [225]
322 17.0 HUNCHENSOCKET::SEND-FRAME [152]
2 0.1 1864 98.5 SB-THREAD::CALL-WITH-MUTEX [151]
1 0.1 (FLET #:CLEANUP-FUN-371 :IN SB-THREAD::CALL-WITH-MUTEX) [202]
1861 98.4 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
------------------------------------------------------------------------
326 17.2 SEND-HUNCHENSOCKET-MESSAGE [153]
2 0.1 326 17.2 HUNCHENSOCKET::SEND-FRAME [152]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
322 17.0 SB-THREAD::CALL-WITH-MUTEX [151]
------------------------------------------------------------------------
793 41.9 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
2 0.1 793 41.9 SEND-HUNCHENSOCKET-MESSAGE [153]
2 0.1 GET-OUTPUT-STREAM-STRING [28]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
4 0.2 SB-IMPL::%MAKE-STRING-OUTPUT-STREAM [7]
2 0.1 SB-KERNEL:CLASSOID-TYPEP [33]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [8]
192 10.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
259 13.7 HUNCHENSOCKET:SEND-TEXT-MESSAGE [122]
326 17.2 HUNCHENSOCKET::SEND-FRAME [152]
------------------------------------------------------------------------
1858 98.2 (LAMBDA NIL :IN HUNCHENTOOT:PROCESS-REQUEST) [214]
2 0.1 1858 98.2 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
3 0.2 HUNCHENSOCKET::READ-FRAME-FROM-CLIENT [163]
4 0.2 SB-VM::UNDEFINED-TRAMP [4]
352 18.6 HUNCHENSOCKET::READ-FRAME [55]
1494 79.0 HUNCHENSOCKET::HANDLE-FRAME [47]
------------------------------------------------------------------------
287 15.2 HUNCHENSOCKET::HANDLE-FRAME [47]
2 0.1 287 15.2 FLEXI-STREAMS:OCTETS-TO-STRING [155]
2 0.1 FLEXI-STREAMS::MAYBE-CONVERT-EXTERNAL-FORMAT [95]
9 0.5 (LAMBDA (SB-PCL::.ARG0. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [16]
4 0.2 SB-C:RETURN-MULTIPLE [9]
7 0.4 (SB-PCL::EMF MAKE-INSTANCE) [38]
11 0.6 (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL)) [189]
55 2.9 FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT% [49]
132 7.0 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
56 3.0 FLEXI-STREAMS:MAKE-EXTERNAL-FORMAT [39]
------------------------------------------------------------------------
2 0.1 HUNCHENSOCKET::MASK-UNMASK [190]
2 0.1 2 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET (UNSIGNED-BYTE 8)) [156]
------------------------------------------------------------------------
2 0.1 REPLACE [69]
2 0.1 2 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8)) [157]
------------------------------------------------------------------------
9 0.5 (SB-PCL::EMF (SETF HUNCHENTOOT:HEADER-OUT)) [52]
2 0.1 10 0.5 (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL)) [158]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
2 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [137]
1 0.1 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [92]
4 0.2 SB-KERNEL:%ASSOC-EQ [103]
------------------------------------------------------------------------
3 0.2 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
2 0.1 3 0.2 SB-PCL::ALLOCATE-STANDARD-INSTANCE [159]
1 0.1 SB-PCL::%MAKE-STANDARD-INSTANCE [136]
------------------------------------------------------------------------
2 0.1 JSON-RESP [127]
2 0.1 2 0.1 (SETF HUNCHENTOOT:CONTENT-TYPE*) [160]
------------------------------------------------------------------------
1 0.1 SB-IMPL::OUTPUT-UNSIGNED-BYTE-FULL-BUFFERED [162]
2 0.1 2 0.1 SB-IMPL::SYNCHRONIZE-STREAM-OUTPUT [161]
------------------------------------------------------------------------
3 0.2 WRITE-BYTE [138]
2 0.1 3 0.2 SB-IMPL::OUTPUT-UNSIGNED-BYTE-FULL-BUFFERED [162]
1 0.1 SB-IMPL::SYNCHRONIZE-STREAM-OUTPUT [161]
------------------------------------------------------------------------
3 0.2 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
2 0.1 3 0.2 HUNCHENSOCKET::READ-FRAME-FROM-CLIENT [163]
1 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
------------------------------------------------------------------------
2 0.1 REPLACE [69]
2 0.1 2 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF [164]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
2 0.1 2 0.1 MY-PACKAGE::GAME-MOVE-ROT [165]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
6 0.3 SB-PCL::MAYBE-CALL-CTOR [237]
2 0.1 8 0.4 SB-PCL::PLIST-VALUE [166]
6 0.3 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [66]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
10 0.5 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
2 0.1 11 0.6 (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [167]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
4 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [117]
1 0.1 SB-IMPL::GET-CAT-ENTRY [114]
3 0.2 (SB-PCL::FAST-METHOD FLEXI-STREAMS::CHECK-END (T T T T)) [144]
------------------------------------------------------------------------
2 0.1 FIND [26]
2 0.1 2 0.1 IDENTITY [168]
------------------------------------------------------------------------
7 0.4 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
2 0.1 7 0.4 SB-PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN [169]
5 0.3 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [11]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
2 0.1 2 0.1 MY-PACKAGE::GAME-MOVE-SHAPE-CODE [170]
------------------------------------------------------------------------
2 0.1 SB-VM::GENERIC-+ [99]
7 0.4 (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T)) [119]
2 0.1 9 0.5 PARSE-INTEGER [171]
2 0.1 DIGIT-CHAR-P [182]
3 0.2 SB-IMPL::GET-CAT-ENTRY [114]
2 0.1 SB-EXT:FLOAT-INFINITY-P [147]
------------------------------------------------------------------------
2 0.1 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
2 0.1 2 0.1 (SB-PCL::FAST-METHOD HUNCHENSOCKET:CHECK-MESSAGE (HUNCHENSOCKET:WEBSOCKET-RESOURCE HUNCHENSOCKET:WEBSOCKET-CLIENT T T T)) [172]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
2 0.1 2 0.1 (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) [173]
------------------------------------------------------------------------
2 0.1 SB-KERNEL:%MAKE-ARRAY [13]
2 0.1 2 0.1 SB-KERNEL:CLASSOID-CELL-TYPEP [174]
------------------------------------------------------------------------
1 0.1 GAME-EXC-MOVE [130]
1 0.1 (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T)) [97]
2 0.1 2 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF T) [175]
------------------------------------------------------------------------
2 0.1 HUNCHENSOCKET::HANDLE-FRAME [47]
2 0.1 2 0.1 SB-IMPL::LIST-REVERSE [176]
------------------------------------------------------------------------
2 0.1 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
2 0.1 2 0.1 SB-UNIX:UNIX-WRITE [177]
------------------------------------------------------------------------
2 0.1 FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME [36]
2 0.1 2 0.1 FLEXI-STREAMS::CODE-PAGE-NAME-P [178]
------------------------------------------------------------------------
2 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
2 0.1 2 0.1 (SB-PCL::FAST-METHOD PRINT-OBJECT (INTEGER T)) [179]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T)) [30]
2 0.1 2 0.1 (LAMBDA (SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION) [180]
------------------------------------------------------------------------
2 0.1 READ-SEQUENCE [76]
2 0.1 2 0.1 SB-KERNEL:SEQUENCEP [181]
------------------------------------------------------------------------
2 0.1 PARSE-INTEGER [171]
2 0.1 2 0.1 DIGIT-CHAR-P [182]
------------------------------------------------------------------------
2 0.1 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
2 0.1 2 0.1 (FLET SB-INT:%WRITE :IN SB-UNIX:UNIX-WRITE) [183]
------------------------------------------------------------------------
2 0.1 (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME) [141]
2 0.1 2 0.1 (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.)) [184]
------------------------------------------------------------------------
2 0.1 SB-KERNEL:TWO-ARG-> [98]
2 0.1 2 0.1 SB-KERNEL:%UNARY-TRUNCATE/SINGLE-FLOAT [185]
------------------------------------------------------------------------
2 0.1 SB-VM::GENERIC-+ [99]
2 0.1 2 0.1 SB-KERNEL:TWO-ARG-= [186]
------------------------------------------------------------------------
43 2.3 SB-IMPL::REFILL-INPUT-BUFFER [120]
1 0.1 44 2.3 SB-IMPL::SYSREAD-MAY-BLOCK-P [187]
6 0.3 SB-UNIX:UNIX-SIMPLE-POLL [19]
30 1.6 "foreign function __poll" [2]
------------------------------------------------------------------------
2 0.1 (SB-PCL::EMF (SETF HUNCHENTOOT:HEADER-OUT)) [52]
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
1 0.1 3 0.2 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME) [188]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
1 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [137]
------------------------------------------------------------------------
5 0.3 FLEXI-STREAMS:STRING-TO-OCTETS [121]
11 0.6 FLEXI-STREAMS:OCTETS-TO-STRING [155]
1 0.1 16 0.8 (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL)) [189]
12 0.6 FIND-CLASS [86]
3 0.2 SB-PCL::FIND-CLASS-FROM-CELL [129]
------------------------------------------------------------------------
14 0.7 HUNCHENSOCKET::HANDLE-FRAME [47]
1 0.1 14 0.7 HUNCHENSOCKET::MASK-UNMASK [190]
1 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [31]
1 0.1 SB-KERNEL:TWO-ARG-XOR [210]
4 0.2 (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8)) [115]
1 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS [197]
4 0.2 SB-KERNEL:EXTENDED-SEQUENCE-P [106]
2 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET (UNSIGNED-BYTE 8)) [156]
------------------------------------------------------------------------
35 1.8 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
1 0.1 35 1.8 HUNCHENSOCKET::WRITE-FRAME [191]
7 0.4 WRITE-BYTE [138]
27 1.4 WRITE-SEQUENCE [62]
------------------------------------------------------------------------
20 1.1 HUNCHENSOCKET::HANDLE-FRAME [47]
1 0.1 20 1.1 HUNCHENSOCKET::READ-APPLICATION-DATA [192]
1 0.1 (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [17]
2 0.1 SB-VM::UNDEFINED-TRAMP [4]
13 0.7 HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE [126]
3 0.2 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl") [134]
------------------------------------------------------------------------
15 0.8 HUNCHENSOCKET::HANDLE-FRAME [47]
1 0.1 15 0.8 CONCATENATE [193]
14 0.7 SB-KERNEL:%CONCATENATE-TO-SIMPLE-VECTOR [135]
------------------------------------------------------------------------
1 0.1 GAME-EXC-MOVE [130]
1 0.1 1 0.1 SB-IMPL::SLOW-HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS [194]
------------------------------------------------------------------------
1 0.1 SWANK/BACKEND:CALL-WITH-LOCK-HELD [252]
1 0.1 1 0.1 SB-IMPL::GET3 [195]
------------------------------------------------------------------------
1 0.1 SB-PCL::MAYBE-CALL-CTOR [237]
1 0.1 1 0.1 GETF [196]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::MASK-UNMASK [190]
1 0.1 1 0.1 SB-KERNEL:HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS [197]
------------------------------------------------------------------------
1 0.1 (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE) [65]
1 0.1 1 0.1 (SB-PCL::FAST-METHOD SB-MOP:CLASS-PROTOTYPE :BEFORE (T)) [198]
------------------------------------------------------------------------
1 0.1 SB-C::GET-INFO-VALUE [143]
1 0.1 1 0.1 SB-C::PACKED-INFO-VALUE-INDEX [199]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE)) [12]
1 0.1 1 0.1 MY-PACKAGE::GAME-MOVE-COL [200]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
1 0.1 1 0.1 SB-VM::FILL-VECTOR/T [201]
------------------------------------------------------------------------
1 0.1 SB-THREAD::CALL-WITH-MUTEX [151]
1 0.1 1 0.1 (FLET #:CLEANUP-FUN-371 :IN SB-THREAD::CALL-WITH-MUTEX) [202]
------------------------------------------------------------------------
1 0.1 SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE [133]
1 0.1 1 0.1 SB-IMPL::STRING-OUT-MISC [203]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::HANDLE-FRAME [47]
1 0.1 1 0.1 (FLET #:CLEANUP-FUN-500 :IN HUNCHENSOCKET::HANDLE-FRAME) [204]
------------------------------------------------------------------------
1 0.1 SB-IMPL::ANSI-STREAM-READ-SEQUENCE [41]
1 0.1 1 0.1 SB-IMPL::ANSI-STREAM-READ-N-BYTES [205]
------------------------------------------------------------------------
1 0.1 PPRINT-DISPATCH [6]
1 0.1 1 0.1 "PPRINT-MACRO-CALL-P" [206]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
1 0.1 1 0.1 (SB-PCL::FAST-METHOD SB-MOP:CLASS-DEFAULT-INITARGS (SB-PCL::SLOT-CLASS)) [207]
------------------------------------------------------------------------
1 0.1 WRITE-CHAR [15]
1 0.1 1 0.1 (SB-PCL::EMF SB-GRAY:STREAM-WRITE-CHAR) [208]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
1 0.1 1 0.1 (SB-PCL::FAST-METHOD INITIALIZE-INSTANCE (SB-PCL::SLOT-OBJECT)) [209]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::MASK-UNMASK [190]
1 0.1 1 0.1 SB-KERNEL:TWO-ARG-XOR [210]
------------------------------------------------------------------------
1 0.1 SB-SYS:DECODE-TIMEOUT [131]
1 0.1 1 0.1 "foreign function sb_gettimeofday" [211]
------------------------------------------------------------------------
1 0.1 REPLACE [69]
1 0.1 1 0.1 (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET T) [212]
------------------------------------------------------------------------
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-654 :IN SB-THREAD::%CONDITION-WAIT) [265]
1 0.1 1 0.1 "foreign function syscall" [213]
------------------------------------------------------------------------
1858 98.2 HUNCHENSOCKET::CALL-WITH-NEW-CLIENT-FOR-RESOURCE [215]
0 0.0 1858 98.2 (LAMBDA NIL :IN HUNCHENTOOT:PROCESS-REQUEST) [214]
1858 98.2 HUNCHENSOCKET::READ-HANDLE-LOOP [154]
------------------------------------------------------------------------
1858 98.2 (SB-PCL::EMF HUNCHENTOOT:PROCESS-REQUEST) [216]
0 0.0 1858 98.2 HUNCHENSOCKET::CALL-WITH-NEW-CLIENT-FOR-RESOURCE [215]
1858 98.2 (LAMBDA NIL :IN HUNCHENTOOT:PROCESS-REQUEST) [214]
------------------------------------------------------------------------
1860 98.3 HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED [217]
0 0.0 1860 98.3 (SB-PCL::EMF HUNCHENTOOT:PROCESS-REQUEST) [216]
2 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) [236]
1858 98.2 HUNCHENSOCKET::CALL-WITH-NEW-CLIENT-FOR-RESOURCE [215]
------------------------------------------------------------------------
1861 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T)) [218]
0 0.0 1861 98.4 HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED [217]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) [236]
1860 98.3 (SB-PCL::EMF HUNCHENTOOT:PROCESS-REQUEST) [216]
------------------------------------------------------------------------
1862 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T)) [219]
0 0.0 1862 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T)) [218]
1 0.1 HUNCHENTOOT::GET-REQUEST-DATA [257]
1861 98.4 HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED [217]
------------------------------------------------------------------------
1 0.1 (FLET HUNCHENTOOT::PROCESS-CONNECTION% :IN HUNCHENTOOT::HANDLE-INCOMING-CONNECTION%) [221]
1861 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR T)) [220]
0 0.0 1862 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T)) [219]
1862 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T)) [218]
------------------------------------------------------------------------
1861 98.4 (FLET HUNCHENTOOT::PROCESS-CONNECTION% :IN HUNCHENTOOT::HANDLE-INCOMING-CONNECTION%) [221]
0 0.0 1861 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR T)) [220]
1861 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T)) [219]
------------------------------------------------------------------------
1862 98.4 (LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS) [222]
0 0.0 1862 98.4 (FLET HUNCHENTOOT::PROCESS-CONNECTION% :IN HUNCHENTOOT::HANDLE-INCOMING-CONNECTION%) [221]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T)) [219]
1861 98.4 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR T)) [220]
------------------------------------------------------------------------
1862 98.4 (FLET #:WITHOUT-INTERRUPTS-BODY-1139 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [223]
0 0.0 1862 98.4 (LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS) [222]
1862 98.4 (FLET HUNCHENTOOT::PROCESS-CONNECTION% :IN HUNCHENTOOT::HANDLE-INCOMING-CONNECTION%) [221]
------------------------------------------------------------------------
1864 98.5 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [224]
0 0.0 1864 98.5 (FLET #:WITHOUT-INTERRUPTS-BODY-1139 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [223]
2 0.1 SWANK::AUTO-FLUSH-LOOP [251]
1862 98.4 (LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS) [222]
------------------------------------------------------------------------
1545 81.7 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
0 0.0 1864 98.5 (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [224]
1864 98.5 (FLET #:WITHOUT-INTERRUPTS-BODY-1139 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [223]
------------------------------------------------------------------------
1864 98.5 "foreign function call_into_lisp" [226]
0 0.0 1864 98.5 SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE [225]
1864 98.5 SB-THREAD::CALL-WITH-MUTEX [151]
------------------------------------------------------------------------
1864 98.5 "foreign function new_thread_trampoline" [227]
0 0.0 1864 98.5 "foreign function call_into_lisp" [226]
1864 98.5 SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE [225]
------------------------------------------------------------------------
0 0.0 1864 98.5 "foreign function new_thread_trampoline" [227]
1864 98.5 "foreign function call_into_lisp" [226]
------------------------------------------------------------------------
1 0.1 PRINC [258]
1 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
185 9.8 SB-INT:STRINGIFY-OBJECT [123]
0 0.0 186 9.8 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
2 0.1 SB-IMPL::STRING-SOUT [24]
2 0.1 (SB-PCL::FAST-METHOD PRINT-OBJECT (INTEGER T)) [179]
3 0.2 SB-KERNEL:OUTPUT-UGLY-OBJECT [146]
1 0.1 SB-KERNEL:LIST-FILL* [109]
5 0.3 SB-VM::UNDEFINED-TRAMP [4]
10 0.5 SB-IMPL::OUTPUT-VECTOR [44]
17 0.9 (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl") [20]
7 0.4 WRITE-STRING [22]
25 1.3 SB-IMPL::%WRITE-STRING [29]
23 1.2 SB-IMPL::OUTPUT-INTEGER [102]
1 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
2 0.1 PPRINT-DISPATCH [6]
80 4.2 (LABELS SB-IMPL::PRINT-IT :IN SB-KERNEL:OUTPUT-OBJECT) [77]
9 0.5 (SB-PCL::FAST-METHOD PRINT-OBJECT (VECTOR T)) [48]
------------------------------------------------------------------------
10 0.5 SB-IMPL::BUFFER-OUTPUT [82]
0 0.0 10 0.5 (FLET SB-IMPL::COPY-TO-BUFFER :IN SB-IMPL::BUFFER-OUTPUT) [229]
10 0.5 SB-KERNEL:COPY-UB8-TO-SYSTEM-AREA [35]
------------------------------------------------------------------------
1 0.1 (FLET #:WRAPPER715 :IN HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE) [231]
0 0.0 1 0.1 INIT-SESSION [230]
1 0.1 FORCE-OUTPUT [118]
------------------------------------------------------------------------
1 0.1 SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1 [232]
0 0.0 1 0.1 (FLET #:WRAPPER715 :IN HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE) [231]
1 0.1 INIT-SESSION [230]
------------------------------------------------------------------------
1 0.1 HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE [233]
0 0.0 1 0.1 SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1 [232]
1 0.1 (FLET #:WRAPPER715 :IN HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE) [231]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:ACCEPTOR-DISPATCH-REQUEST (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR HUNCHENSOCKET::WEBSOCKET-REQUEST)) [234]
0 0.0 1 0.1 HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE [233]
1 0.1 SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1 [232]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:HANDLE-REQUEST (HUNCHENTOOT:ACCEPTOR HUNCHENTOOT:REQUEST)) [235]
0 0.0 1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:ACCEPTOR-DISPATCH-REQUEST (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR HUNCHENSOCKET::WEBSOCKET-REQUEST)) [234]
1 0.1 HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE [233]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) [236]
0 0.0 1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:HANDLE-REQUEST (HUNCHENTOOT:ACCEPTOR HUNCHENTOOT:REQUEST)) [235]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:ACCEPTOR-DISPATCH-REQUEST (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR HUNCHENSOCKET::WEBSOCKET-REQUEST)) [234]
------------------------------------------------------------------------
1 0.1 HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED [217]
2 0.1 (SB-PCL::EMF HUNCHENTOOT:PROCESS-REQUEST) [216]
0 0.0 3 0.2 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) [236]
2 0.1 HUNCHENTOOT::START-OUTPUT [262]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:HANDLE-REQUEST (HUNCHENTOOT:ACCEPTOR HUNCHENTOOT:REQUEST)) [235]
------------------------------------------------------------------------
8 0.4 (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS)) [42]
0 0.0 8 0.4 SB-PCL::MAYBE-CALL-CTOR [237]
1 0.1 GETF [196]
6 0.3 SB-PCL::PLIST-VALUE [166]
------------------------------------------------------------------------
1 0.1 (LAMBDA (&REST REST) :IN SB-IMPL::GET-EXTERNAL-FORMAT) [239]
0 0.0 1 0.1 SB-IMPL::INPUT-CHAR/UTF-8 [238]
1 0.1 SB-IMPL::REFILL-INPUT-BUFFER [120]
------------------------------------------------------------------------
1 0.1 READ-CHAR [240]
0 0.0 1 0.1 (LAMBDA (&REST REST) :IN SB-IMPL::GET-EXTERNAL-FORMAT) [239]
1 0.1 SB-IMPL::INPUT-CHAR/UTF-8 [238]
------------------------------------------------------------------------
1 0.1 SB-IMPL::%READ-PRESERVING-WHITESPACE [241]
1 0.1 READ-CHAR [240]
0 0.0 1 0.1 READ-CHAR [240]
1 0.1 READ-CHAR [240]
1 0.1 (LAMBDA (&REST REST) :IN SB-IMPL::GET-EXTERNAL-FORMAT) [239]
------------------------------------------------------------------------
1 0.1 READ [242]
1 0.1 SB-IMPL::%READ-PRESERVING-WHITESPACE [241]
0 0.0 1 0.1 SB-IMPL::%READ-PRESERVING-WHITESPACE [241]
1 0.1 SB-IMPL::%READ-PRESERVING-WHITESPACE [241]
1 0.1 READ-CHAR [240]
------------------------------------------------------------------------
1 0.1 SB-IMPL::REPL-READ-FORM-FUN [243]
0 0.0 1 0.1 READ [242]
1 0.1 SB-IMPL::%READ-PRESERVING-WHITESPACE [241]
------------------------------------------------------------------------
1 0.1 SB-IMPL::REPL-FUN [244]
0 0.0 1 0.1 SB-IMPL::REPL-READ-FORM-FUN [243]
1 0.1 READ [242]
------------------------------------------------------------------------
1 0.1 (LAMBDA NIL :IN SB-IMPL::TOPLEVEL-REPL) [245]
0 0.0 1 0.1 SB-IMPL::REPL-FUN [244]
1 0.1 SB-IMPL::REPL-READ-FORM-FUN [243]
------------------------------------------------------------------------
1 0.1 SB-IMPL::%WITH-REBOUND-IO-SYNTAX [246]
0 0.0 1 0.1 (LAMBDA NIL :IN SB-IMPL::TOPLEVEL-REPL) [245]
1 0.1 SB-IMPL::REPL-FUN [244]
------------------------------------------------------------------------
1 0.1 SB-IMPL::TOPLEVEL-REPL [247]
0 0.0 1 0.1 SB-IMPL::%WITH-REBOUND-IO-SYNTAX [246]
1 0.1 (LAMBDA NIL :IN SB-IMPL::TOPLEVEL-REPL) [245]
------------------------------------------------------------------------
1 0.1 SB-IMPL::TOPLEVEL-INIT [248]
0 0.0 1 0.1 SB-IMPL::TOPLEVEL-REPL [247]
1 0.1 SB-IMPL::%WITH-REBOUND-IO-SYNTAX [246]
------------------------------------------------------------------------
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SB-EXT:SAVE-LISP-AND-DIE) [249]
0 0.0 1 0.1 SB-IMPL::TOPLEVEL-INIT [248]
1 0.1 SB-IMPL::TOPLEVEL-REPL [247]
------------------------------------------------------------------------
1 0.1 (LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE) [250]
0 0.0 1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SB-EXT:SAVE-LISP-AND-DIE) [249]
1 0.1 SB-IMPL::TOPLEVEL-INIT [248]
------------------------------------------------------------------------
0 0.0 1 0.1 (LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE) [250]
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SB-EXT:SAVE-LISP-AND-DIE) [249]
------------------------------------------------------------------------
2 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-1139 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) [223]
0 0.0 2 0.1 SWANK::AUTO-FLUSH-LOOP [251]
1 0.1 FORCE-OUTPUT [118]
1 0.1 SB-VM::UNDEFINED-TRAMP [4]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FINISH-OUTPUT (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [253]
0 0.0 1 0.1 SWANK/BACKEND:CALL-WITH-LOCK-HELD [252]
1 0.1 SB-IMPL::GET3 [195]
------------------------------------------------------------------------
1 0.1 (FLET #:FORM-FUN-3091 :IN SB-GRAY:STREAM-FORCE-OUTPUT) [254]
0 0.0 1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FINISH-OUTPUT (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [253]
1 0.1 SWANK/BACKEND:CALL-WITH-LOCK-HELD [252]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FORCE-OUTPUT :AROUND (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [255]
0 0.0 1 0.1 (FLET #:FORM-FUN-3091 :IN SB-GRAY:STREAM-FORCE-OUTPUT) [254]
1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FINISH-OUTPUT (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [253]
------------------------------------------------------------------------
1 0.1 FORCE-OUTPUT [118]
0 0.0 1 0.1 (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FORCE-OUTPUT :AROUND (SWANK/GRAY::SLIME-OUTPUT-STREAM)) [255]
1 0.1 (FLET #:FORM-FUN-3091 :IN SB-GRAY:STREAM-FORCE-OUTPUT) [254]
------------------------------------------------------------------------
1 0.1 HUNCHENTOOT::GET-REQUEST-DATA [257]
0 0.0 1 0.1 CHUNGA:READ-HTTP-HEADERS [256]
1 0.1 WRITE-SEQUENCE [62]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T)) [218]
0 0.0 1 0.1 HUNCHENTOOT::GET-REQUEST-DATA [257]
1 0.1 CHUNGA:READ-HTTP-HEADERS [256]
------------------------------------------------------------------------
1 0.1 (LAMBDA (STREAM #:FORMAT-ARG216 #:FORMAT-ARG217 #:FORMAT-ARG219 #:FORMAT-ARG221 &REST SB-FORMAT::ARGS) :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/hunchentoot-v1.2.38/headers.lisp") [259]
0 0.0 1 0.1 PRINC [258]
1 0.1 (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT) [228]
------------------------------------------------------------------------
1 0.1 FORMAT [260]
0 0.0 1 0.1 (LAMBDA (STREAM #:FORMAT-ARG216 #:FORMAT-ARG217 #:FORMAT-ARG219 #:FORMAT-ARG221 &REST SB-FORMAT::ARGS) :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/hunchentoot-v1.2.38/headers.lisp") [259]
1 0.1 PRINC [258]
------------------------------------------------------------------------
1 0.1 HUNCHENTOOT::SEND-RESPONSE [261]
0 0.0 1 0.1 FORMAT [260]
1 0.1 (LAMBDA (STREAM #:FORMAT-ARG216 #:FORMAT-ARG217 #:FORMAT-ARG219 #:FORMAT-ARG221 &REST SB-FORMAT::ARGS) :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/hunchentoot-v1.2.38/headers.lisp") [259]
------------------------------------------------------------------------
2 0.1 HUNCHENTOOT::START-OUTPUT [262]
0 0.0 2 0.1 HUNCHENTOOT::SEND-RESPONSE [261]
1 0.1 FINISH-OUTPUT [264]
1 0.1 FORMAT [260]
------------------------------------------------------------------------
2 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) [236]
0 0.0 2 0.1 HUNCHENTOOT::START-OUTPUT [262]
2 0.1 HUNCHENTOOT::SEND-RESPONSE [261]
------------------------------------------------------------------------
1 0.1 FINISH-OUTPUT [264]
0 0.0 1 0.1 SB-IMPL::FINISH-FD-STREAM-OUTPUT [263]
1 0.1 SB-IMPL::FLUSH-OUTPUT-BUFFER [96]
------------------------------------------------------------------------
1 0.1 HUNCHENTOOT::SEND-RESPONSE [261]
0 0.0 1 0.1 FINISH-OUTPUT [264]
1 0.1 SB-IMPL::FINISH-FD-STREAM-OUTPUT [263]
------------------------------------------------------------------------
1 0.1 SB-THREAD:CONDITION-WAIT [266]
0 0.0 1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-654 :IN SB-THREAD::%CONDITION-WAIT) [265]
1 0.1 "foreign function syscall" [213]
------------------------------------------------------------------------
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX) [46]
0 0.0 1 0.1 SB-THREAD:CONDITION-WAIT [266]
1 0.1 (FLET #:WITHOUT-INTERRUPTS-BODY-654 :IN SB-THREAD::%CONDITION-WAIT) [265]
------------------------------------------------------------------------
1 0.1 SWANK::WAIT-FOR-EVENT [268]
0 0.0 1 0.1 (FLET SWANK/BACKEND:RECEIVE-IF :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [267]
1 0.1 SB-THREAD::CALL-WITH-MUTEX [151]
------------------------------------------------------------------------
1 0.1 SWANK::SLDB-LOOP [269]
0 0.0 1 0.1 SWANK::WAIT-FOR-EVENT [268]
1 0.1 (FLET SWANK/BACKEND:RECEIVE-IF :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [267]
------------------------------------------------------------------------
1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [270]
0 0.0 1 0.1 SWANK::SLDB-LOOP [269]
1 0.1 SWANK::WAIT-FOR-EVENT [268]
------------------------------------------------------------------------
1 0.1 SWANK::DEBUG-IN-EMACS [271]
0 0.0 1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [270]
1 0.1 SWANK::SLDB-LOOP [269]
------------------------------------------------------------------------
1 0.1 SWANK/SBCL::CALL-WITH-BREAK-HOOK [272]
0 0.0 1 0.1 SWANK::DEBUG-IN-EMACS [271]
1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [270]
------------------------------------------------------------------------
1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [273]
0 0.0 1 0.1 SWANK/SBCL::CALL-WITH-BREAK-HOOK [272]
1 0.1 SWANK:INVOKE-SLIME-DEBUGGER [275]
1 0.1 SWANK::DEBUG-IN-EMACS [271]
------------------------------------------------------------------------
1 0.1 SWANK:SWANK-DEBUGGER-HOOK [276]
1 0.1 SWANK::CALL-WITH-BINDINGS [274]
0 0.0 1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [273]
1 0.1 SWANK/SBCL::CALL-WITH-BREAK-HOOK [272]
------------------------------------------------------------------------
1 0.1 SWANK:INVOKE-SLIME-DEBUGGER [275]
0 0.0 1 0.1 SWANK::CALL-WITH-BINDINGS [274]
1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [273]
------------------------------------------------------------------------
1 0.1 SWANK/SBCL::CALL-WITH-BREAK-HOOK [272]
0 0.0 1 0.1 SWANK:INVOKE-SLIME-DEBUGGER [275]
1 0.1 SWANK::CALL-WITH-BINDINGS [274]
------------------------------------------------------------------------
1 0.1 SB-DEBUG::RUN-HOOK [277]
0 0.0 1 0.1 SWANK:SWANK-DEBUGGER-HOOK [276]
1 0.1 (FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp") [273]
------------------------------------------------------------------------
1 0.1 INVOKE-DEBUGGER [278]
0 0.0 1 0.1 SB-DEBUG::RUN-HOOK [277]
1 0.1 SWANK:SWANK-DEBUGGER-HOOK [276]
------------------------------------------------------------------------
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:MAYBE-INVOKE-DEBUGGER (T)) [279]
0 0.0 1 0.1 INVOKE-DEBUGGER [278]
1 0.1 SB-DEBUG::RUN-HOOK [277]
------------------------------------------------------------------------
1 0.1 (FLET #:H0 :IN HUNCHENTOOT:PROCESS-REQUEST) [280]
0 0.0 1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:MAYBE-INVOKE-DEBUGGER (T)) [279]
1 0.1 INVOKE-DEBUGGER [278]
------------------------------------------------------------------------
1 0.1 SIGNAL [281]
0 0.0 1 0.1 (FLET #:H0 :IN HUNCHENTOOT:PROCESS-REQUEST) [280]
1 0.1 (SB-PCL::FAST-METHOD HUNCHENTOOT:MAYBE-INVOKE-DEBUGGER (T)) [279]
------------------------------------------------------------------------
1 0.1 ERROR [282]
0 0.0 1 0.1 SIGNAL [281]
1 0.1 (FLET #:H0 :IN HUNCHENTOOT:PROCESS-REQUEST) [280]
------------------------------------------------------------------------
1 0.1 SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE [54]
0 0.0 1 0.1 ERROR [282]
1 0.1 SIGNAL [281]
------------------------------------------------------------------------
Self Total Cumul
Nr Count % Count % Count % Calls Function
------------------------------------------------------------------------
1 256 13.5 256 13.5 256 13.5 - "foreign function write"
2 161 8.5 161 8.5 417 22.0 - "foreign function __poll"
3 74 3.9 85 4.5 491 26.0 - STRING-EQUAL
4 68 3.6 68 3.6 559 29.5 - SB-VM::UNDEFINED-TRAMP
5 51 2.7 51 2.7 610 32.2 - (FLET #:CLEANUP-FUN-2093 :IN SB-IMPL::REFILL-INPUT-BUFFER)
6 34 1.8 77 4.1 644 34.0 - PPRINT-DISPATCH
7 34 1.8 34 1.8 678 35.8 - SB-IMPL::%MAKE-STRING-OUTPUT-STREAM
8 34 1.8 34 1.8 712 37.6 - (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
9 32 1.7 32 1.7 744 39.3 - SB-C:RETURN-MULTIPLE
10 26 1.4 26 1.4 770 40.7 - SB-KERNEL:UB32-BASH-COPY
11 26 1.4 26 1.4 796 42.1 - (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
12 25 1.3 367 19.4 821 43.4 - (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (MY-PACKAGE:GAME-MOVE))
13 22 1.2 35 1.8 843 44.6 - SB-KERNEL:%MAKE-ARRAY
14 21 1.1 37 2.0 864 45.7 - SB-KERNEL:%FIND-POSITION
15 21 1.1 32 1.7 885 46.8 - WRITE-CHAR
16 20 1.1 20 1.1 905 47.8 - (LAMBDA (SB-PCL::.ARG0. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
17 18 1.0 18 1.0 923 48.8 - (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
18 17 0.9 17 0.9 940 49.7 - STRING
19 17 0.9 17 0.9 957 50.6 - SB-UNIX:UNIX-SIMPLE-POLL
20 17 0.9 17 0.9 974 51.5 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
21 16 0.8 106 5.6 990 52.3 - SB-KERNEL:%ASSOC-TEST
22 15 0.8 17 0.9 1005 53.1 - (SB-PCL::EMF SHARED-INITIALIZE)
23 15 0.8 15 0.8 1020 53.9 - WRITE-STRING
24 13 0.7 29 1.5 1033 54.6 - SB-IMPL::STRING-SOUT
25 13 0.7 29 1.5 1046 55.3 - FIND
26 13 0.7 13 0.7 1059 56.0 - EQL
27 13 0.7 13 0.7 1072 56.7 - "PPRINT-ARRAY-P"
28 12 0.6 84 4.4 1084 57.3 - (SB-PCL::FAST-METHOD SHARED-INITIALIZE (SB-PCL::SLOT-OBJECT T))
29 12 0.6 44 2.3 1096 57.9 - GET-OUTPUT-STREAM-STRING
30 12 0.6 41 2.2 1108 58.6 - SB-IMPL::%WRITE-STRING
31 12 0.6 12 0.6 1120 59.2 - SB-KERNEL:HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS
32 11 0.6 24 1.3 1131 59.8 - FLEXI-STREAMS::EXTERNAL-FORMAT-CLASS-NAME
33 11 0.6 17 0.9 1142 60.4 - (SB-PCL::EMF MAKE-INSTANCE)
34 11 0.6 11 0.6 1153 60.9 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
35 11 0.6 11 0.6 1164 61.5 - SB-KERNEL:CLASSOID-TYPEP
36 11 0.6 11 0.6 1175 62.1 - SB-IMPL::STRING-OUCH
37 11 0.6 11 0.6 1186 62.7 - SB-KERNEL:COPY-UB8-TO-SYSTEM-AREA
38 11 0.6 11 0.6 1197 63.3 - SB-PCL::CHECK-APPLICABLE-KEYWORDS
39 10 0.5 265 14.0 1207 63.8 - PRINC-TO-STRING
40 10 0.5 213 11.3 1217 64.3 - (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS))
41 10 0.5 109 5.8 1227 64.9 - FLEXI-STREAMS:MAKE-EXTERNAL-FORMAT
42 10 0.5 29 1.5 1237 65.4 - SB-IMPL::ANSI-STREAM-READ-SEQUENCE
43 10 0.5 18 1.0 1247 65.9 - (LAMBDA (SB-IMPL::BUFFER SB-IMPL::FROM) :IN GET-OUTPUT-STREAM-STRING)
44 10 0.5 10 0.5 1257 66.4 - SB-IMPL::OUTPUT-VECTOR
45 10 0.5 10 0.5 1267 67.0 - SB-IMPL::FD-STREAM-READ-N-BYTES
46 9 0.5 1864 98.5 1276 67.4 - (FLET #:WITHOUT-INTERRUPTS-BODY-359 :IN SB-THREAD::CALL-WITH-MUTEX)
47 9 0.5 1494 79.0 1285 67.9 - HUNCHENSOCKET::HANDLE-FRAME
48 9 0.5 102 5.4 1294 68.4 - FLEXI-STREAMS::MAKE-EXTERNAL-FORMAT%
49 9 0.5 41 2.2 1303 68.9 - (SB-PCL::FAST-METHOD FLEXI-STREAMS::STRING-TO-OCTETS* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T))
50 9 0.5 20 1.1 1312 69.3 - (SB-PCL::EMF (SETF HUNCHENTOOT:HEADER-OUT))
51 9 0.5 14 0.7 1321 69.8 - SB-IMPL::%OUTPUT-REASONABLE-INTEGER-IN-BASE
52 9 0.5 9 0.5 1330 70.3 - (SB-PCL::FAST-METHOD PRINT-OBJECT (VECTOR T))
53 9 0.5 9 0.5 1339 70.8 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF CHARACTER)
54 8 0.4 352 18.6 1347 71.2 - HUNCHENSOCKET::READ-FRAME
55 8 0.4 276 14.6 1355 71.6 - SB-IMPL::INPUT-UNSIGNED-8BIT-BYTE
56 8 0.4 16 0.8 1363 72.0 - (LAMBDA (FLEXI-STREAMS::ITEM FLEXI-STREAMS::PAIR) :IN FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME)
57 8 0.4 11 0.6 1371 72.5 - (SB-PCL::EMF SB-MOP:CLASS-SLOTS)
58 8 0.4 8 0.4 1379 72.9 - "PPRINT-FUN-CALL-P"
59 8 0.4 8 0.4 1387 73.3 - REDUCE
60 8 0.4 8 0.4 1395 73.7 - SB-KERNEL:%COERCE-CALLABLE-TO-FUN
61 7 0.4 284 15.0 1402 74.1 - READ-BYTE
62 7 0.4 28 1.5 1409 74.5 - WRITE-SEQUENCE
63 7 0.4 10 0.5 1416 74.8 - (SB-PCL::EMF SB-MOP:CLASS-PROTOTYPE)
64 7 0.4 7 0.4 1423 75.2 - SB-PCL::PLIST-KEYS
65 7 0.4 7 0.4 1430 75.6 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.))
66 7 0.4 7 0.4 1437 76.0 - (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
67 6 0.3 36 1.9 1443 76.3 - FLEXI-STREAMS::NORMALIZE-EXTERNAL-FORMAT-NAME
68 6 0.3 12 0.6 1449 76.6 - (SB-PCL::FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))
69 6 0.3 11 0.6 1455 76.9 - REPLACE
70 6 0.3 9 0.5 1461 77.2 - SB-KERNEL:TWO-ARG-STRING-EQUAL
71 6 0.3 6 0.3 1467 77.5 - (SETF HUNCHENTOOT:RETURN-CODE*)
72 6 0.3 6 0.3 1473 77.9 - SB-IMPL::ALLOCATE-VECTOR-WITH-WIDETAG
73 6 0.3 6 0.3 1479 78.2 - SB-IMPL::FD-STREAM-MISC-ROUTINE
74 6 0.3 6 0.3 1485 78.5 - (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-STD-READER-METHOD-FUNCTION)
75 6 0.3 6 0.3 1491 78.8 - (LAMBDA (SB-PCL::|.P0.| SB-PCL::|.P1.| SB-PCL::|.P2.| SB-PCL::|.P3.|))
76 5 0.3 80 4.2 1496 79.1 - (LABELS SB-IMPL::PRINT-IT :IN SB-KERNEL:OUTPUT-OBJECT)
77 5 0.3 36 1.9 1501 79.3 - READ-SEQUENCE
78 5 0.3 31 1.6 1506 79.6 - SB-PCL::CHECK-MI-INITARGS
79 5 0.3 27 1.4 1511 79.9 - (FLET SB-IMPL::REPLACE-ALL :IN GET-OUTPUT-STREAM-STRING)
80 5 0.3 16 0.8 1516 80.1 - SB-IMPL::BUFFER-OUTPUT
81 5 0.3 15 0.8 1521 80.4 - (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-OCTETS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T))
82 5 0.3 13 0.7 1526 80.7 - FIND-CLASS
83 5 0.3 8 0.4 1531 80.9 - GET-INTERNAL-REAL-TIME
84 5 0.3 6 0.3 1536 81.2 - (SB-PCL::EMF INITIALIZE-INSTANCE)
85 5 0.3 5 0.3 1541 81.4 - CONSP
86 5 0.3 5 0.3 1546 81.7 - CLASS-OF
87 5 0.3 5 0.3 1551 82.0 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.MORE-CONTEXT. SB-PCL::.MORE-COUNT.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
88 5 0.3 5 0.3 1556 82.2 - (LAMBDA (SB-PCL::NV SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION)
89 5 0.3 5 0.3 1561 82.5 - "PPRINT-DATA-LIST-P"
90 5 0.3 5 0.3 1566 82.8 - FLEXI-STREAMS::KOI8-R-NAME-P
91 5 0.3 5 0.3 1571 83.0 - SB-PCL::SLOT-BOUNDP-USING-CLASS-DFUN
92 5 0.3 5 0.3 1576 83.3 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
93 5 0.3 5 0.3 1581 83.6 - SB-KERNEL:TWO-ARG-*
94 5 0.3 5 0.3 1586 83.8 - SB-IMPL::VALIDATE-ARRAY-INITARGS
95 5 0.3 5 0.3 1591 84.1 - FLEXI-STREAMS::MAYBE-CONVERT-EXTERNAL-FORMAT
96 4 0.2 267 14.1 1595 84.3 - SB-IMPL::FLUSH-OUTPUT-BUFFER
97 4 0.2 23 1.2 1599 84.5 - (SB-PCL::FAST-METHOD FLEXI-STREAMS::OCTETS-TO-STRING* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T))
98 4 0.2 23 1.2 1603 84.7 - SB-IMPL::OUTPUT-INTEGER
99 4 0.2 15 0.8 1607 84.9 - SB-VM::GENERIC-+
100 4 0.2 8 0.4 1611 85.1 - SB-KERNEL:FIND-CLASSOID-CELL
101 4 0.2 7 0.4 1615 85.4 - SB-KERNEL:TWO-ARG->
102 4 0.2 5 0.3 1619 85.6 - "foreign function __vdso_gettimeofday"
103 4 0.2 5 0.3 1623 85.8 - SB-KERNEL:LIST-FILL*
104 4 0.2 4 0.2 1627 86.0 - CAR
105 4 0.2 4 0.2 1631 86.2 - SB-KERNEL:%ASSOC-EQ
106 4 0.2 4 0.2 1635 86.4 - SB-INT:COMMA-P
107 4 0.2 4 0.2 1639 86.6 - SB-KERNEL:EXTENDED-SEQUENCE-P
108 4 0.2 4 0.2 1643 86.8 - SB-KERNEL:OUTPUT-OBJECT
109 4 0.2 4 0.2 1647 87.1 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.))
110 4 0.2 4 0.2 1651 87.3 - SB-KERNEL:%UNARY-TRUNCATE
111 4 0.2 4 0.2 1655 87.5 - TRUNCATE
112 4 0.2 4 0.2 1659 87.7 - "foreign function memcpy"
113 4 0.2 4 0.2 1663 87.9 - ASH
114 4 0.2 4 0.2 1667 88.1 - SB-IMPL::GET-CAT-ENTRY
115 4 0.2 4 0.2 1671 88.3 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8))
116 4 0.2 4 0.2 1675 88.5 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
117 4 0.2 4 0.2 1679 88.7 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/dlisp3.fasl")
118 3 0.2 1064 56.2 1682 88.9 - (SB-PCL::FAST-METHOD HUNCHENSOCKET:TEXT-MESSAGE-RECEIVED (SESSION T T))
119 3 0.2 275 14.5 1685 89.1 - FORCE-OUTPUT
120 3 0.2 266 14.1 1688 89.2 - SB-IMPL::REFILL-INPUT-BUFFER
121 3 0.2 259 13.7 1691 89.4 - HUNCHENSOCKET:SEND-TEXT-MESSAGE
122 3 0.2 255 13.5 1694 89.5 - SB-INT:STRINGIFY-OBJECT
123 3 0.2 227 12.0 1697 89.7 - JSON-RESP
124 3 0.2 207 10.9 1700 89.9 - FLEXI-STREAMS:STRING-TO-OCTETS
125 3 0.2 168 8.9 1703 90.0 - SB-SYS:WAIT-UNTIL-FD-USABLE
126 3 0.2 115 6.1 1706 90.2 - (SB-PCL::FAST-METHOD JONATHAN.ENCODE:%TO-JSON (NUMBER))
127 3 0.2 62 3.3 1709 90.3 - HUNCHENSOCKET::READ-N-BYTES-INTO-SEQUENCE
128 3 0.2 39 2.1 1712 90.5 - FLEXI-STREAMS::ISO-8859-NAME-P
129 3 0.2 24 1.3 1715 90.6 - (FLET HUNCHENSOCKET::MAYBE-ACCEPT-DATA-FRAME :IN HUNCHENSOCKET::HANDLE-FRAME)
130 3 0.2 23 1.2 1718 90.8 - GAME-EXC-MOVE
131 3 0.2 23 1.2 1721 91.0 - SB-SYS:DECODE-TIMEOUT
132 3 0.2 21 1.1 1724 91.1 - SB-IMPL::ANSI-STREAM-WRITE-SEQUENCE
133 3 0.2 14 0.7 1727 91.3 - SB-KERNEL:%CONCATENATE-TO-SIMPLE-VECTOR
134 3 0.2 7 0.4 1730 91.4 - WRITE-BYTE
135 3 0.2 4 0.2 1733 91.6 - SB-C::GET-INFO-VALUE
136 3 0.2 3 0.2 1736 91.8 - SB-PCL::FIND-CLASS-FROM-CELL
137 3 0.2 3 0.2 1739 91.9 - LENGTH
138 3 0.2 3 0.2 1742 92.1 - (LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
139 3 0.2 3 0.2 1745 92.2 - SB-PCL::%MAKE-STANDARD-INSTANCE
140 3 0.2 3 0.2 1748 92.4 - (LAMBDA (SB-PCL::.ARG0.) :IN "/build/sbcl-YlyDP6/sbcl-1.3.14/src/pcl/braid.fasl")
141 3 0.2 3 0.2 1751 92.5 - SB-IMPL::LIST-NREVERSE
142 3 0.2 3 0.2 1754 92.7 - HUNCHENSOCKET::CONTROL-FRAME-P
143 3 0.2 3 0.2 1757 92.9 - SB-INT:MEMQ
144 3 0.2 3 0.2 1760 93.0 - (SB-PCL::FAST-METHOD FLEXI-STREAMS::CHECK-END (T T T T))
145 3 0.2 3 0.2 1763 93.2 - SB-IMPL::%OUTPUT-INTEGER-IN-BASE
146 3 0.2 3 0.2 1766 93.3 - SB-KERNEL:OUTPUT-UGLY-OBJECT
147 3 0.2 3 0.2 1769 93.5 - SB-EXT:FLOAT-INFINITY-P
148 3 0.2 3 0.2 1772 93.7 - (LABELS SB-IMPL::EQUAL-AUX :IN EQUAL)
149 3 0.2 3 0.2 1775 93.8 - (LAMBDA (SB-KERNEL::CACHE SB-KERNEL::OBJECT) :IN SB-KERNEL::CACHED-TYPEP)
150 3 0.2 3 0.2 1778 94.0 - (SB-PCL::FAST-METHOD SB-MOP:CLASS-SLOTS :BEFORE (SB-PCL::SLOT-CLASS))
151 2 0.1 1864 98.5 1780 94.1 - SB-THREAD::CALL-WITH-MUTEX
152 2 0.1 1858 98.2 1782 94.2 - HUNCHENSOCKET::READ-HANDLE-LOOP
153 2 0.1 793 41.9 1784 94.3 - SEND-HUNCHENSOCKET-MESSAGE
154 2 0.1 326 17.2 1786 94.4 - HUNCHENSOCKET::SEND-FRAME
155 2 0.1 287 15.2 1788 94.5 - FLEXI-STREAMS:OCTETS-TO-STRING
156 2 0.1 11 0.6 1790 94.6 - (SB-PCL::FAST-METHOD FLEXI-STREAMS::COMPUTE-NUMBER-OF-CHARS (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T))
157 2 0.1 10 0.5 1792 94.7 - (SB-PCL::FAST-METHOD (SETF HUNCHENTOOT:HEADER-OUT) (T SYMBOL))
158 2 0.1 9 0.5 1794 94.8 - PARSE-INTEGER
159 2 0.1 8 0.4 1796 94.9 - SB-PCL::PLIST-VALUE
160 2 0.1 7 0.4 1798 95.0 - SB-PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
161 2 0.1 3 0.2 1800 95.1 - SB-PCL::ALLOCATE-STANDARD-INSTANCE
162 2 0.1 3 0.2 1802 95.2 - SB-IMPL::OUTPUT-UNSIGNED-BYTE-FULL-BUFFERED
163 2 0.1 3 0.2 1804 95.3 - HUNCHENSOCKET::READ-FRAME-FROM-CLIENT
164 2 0.1 2 0.1 1806 95.5 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET (UNSIGNED-BYTE 8))
165 2 0.1 2 0.1 1808 95.6 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF (UNSIGNED-BYTE 8))
166 2 0.1 2 0.1 1810 95.7 - (SETF HUNCHENTOOT:CONTENT-TYPE*)
167 2 0.1 2 0.1 1812 95.8 - SB-IMPL::SYNCHRONIZE-STREAM-OUTPUT
168 2 0.1 2 0.1 1814 95.9 - SB-KERNEL:HAIRY-DATA-VECTOR-REF
169 2 0.1 2 0.1 1816 96.0 - MY-PACKAGE::GAME-MOVE-ROT
170 2 0.1 2 0.1 1818 96.1 - IDENTITY
171 2 0.1 2 0.1 1820 96.2 - MY-PACKAGE::GAME-MOVE-SHAPE-CODE
172 2 0.1 2 0.1 1822 96.3 - (SB-PCL::FAST-METHOD HUNCHENSOCKET:CHECK-MESSAGE (HUNCHENSOCKET:WEBSOCKET-RESOURCE HUNCHENSOCKET:WEBSOCKET-CLIENT T T T))
173 2 0.1 2 0.1 1824 96.4 - (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY)
174 2 0.1 2 0.1 1826 96.5 - SB-KERNEL:CLASSOID-CELL-TYPEP
175 2 0.1 2 0.1 1828 96.6 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-REF T)
176 2 0.1 2 0.1 1830 96.7 - SB-IMPL::LIST-REVERSE
177 2 0.1 2 0.1 1832 96.8 - SB-UNIX:UNIX-WRITE
178 2 0.1 2 0.1 1834 96.9 - FLEXI-STREAMS::CODE-PAGE-NAME-P
179 2 0.1 2 0.1 1836 97.0 - (SB-PCL::FAST-METHOD PRINT-OBJECT (INTEGER T))
180 2 0.1 2 0.1 1838 97.1 - (LAMBDA (SB-KERNEL:INSTANCE) :IN SB-PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION)
181 2 0.1 2 0.1 1840 97.3 - SB-KERNEL:SEQUENCEP
182 2 0.1 2 0.1 1842 97.4 - DIGIT-CHAR-P
183 2 0.1 2 0.1 1844 97.5 - (FLET SB-INT:%WRITE :IN SB-UNIX:UNIX-WRITE)
184 2 0.1 2 0.1 1846 97.6 - (LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-PCL::.ARG3. SB-PCL::.ARG4.))
185 2 0.1 2 0.1 1848 97.7 - SB-KERNEL:%UNARY-TRUNCATE/SINGLE-FLOAT
186 2 0.1 2 0.1 1850 97.8 - SB-KERNEL:TWO-ARG-=
187 1 0.1 44 2.3 1851 97.8 - SB-IMPL::SYSREAD-MAY-BLOCK-P
188 1 0.1 35 1.8 1852 97.9 - HUNCHENSOCKET::WRITE-FRAME
189 1 0.1 20 1.1 1853 97.9 - HUNCHENSOCKET::READ-APPLICATION-DATA
190 1 0.1 16 0.8 1854 98.0 - (SB-PCL::FAST-METHOD MAKE-INSTANCE (SYMBOL))
191 1 0.1 15 0.8 1855 98.0 - CONCATENATE
192 1 0.1 14 0.7 1856 98.1 - HUNCHENSOCKET::MASK-UNMASK
193 1 0.1 3 0.2 1857 98.1 - (FLET SB-THREAD::WITH-MUTEX-THUNK :IN HUNCHENSOCKET::SEND-FRAME)
194 1 0.1 1 0.1 1858 98.2 - SB-IMPL::SLOW-HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS
195 1 0.1 1 0.1 1859 98.3 - SB-IMPL::GET3
196 1 0.1 1 0.1 1860 98.3 - GETF
197 1 0.1 1 0.1 1861 98.4 - SB-KERNEL:HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS
198 1 0.1 1 0.1 1862 98.4 - (SB-PCL::FAST-METHOD SB-MOP:CLASS-PROTOTYPE :BEFORE (T))
199 1 0.1 1 0.1 1863 98.5 - SB-C::PACKED-INFO-VALUE-INDEX
200 1 0.1 1 0.1 1864 98.5 - MY-PACKAGE::GAME-MOVE-COL
201 1 0.1 1 0.1 1865 98.6 - SB-VM::FILL-VECTOR/T
202 1 0.1 1 0.1 1866 98.6 - (FLET #:CLEANUP-FUN-371 :IN SB-THREAD::CALL-WITH-MUTEX)
203 1 0.1 1 0.1 1867 98.7 - SB-IMPL::STRING-OUT-MISC
204 1 0.1 1 0.1 1868 98.7 - (FLET #:CLEANUP-FUN-500 :IN HUNCHENSOCKET::HANDLE-FRAME)
205 1 0.1 1 0.1 1869 98.8 - SB-IMPL::ANSI-STREAM-READ-N-BYTES
206 1 0.1 1 0.1 1870 98.8 - "PPRINT-MACRO-CALL-P"
207 1 0.1 1 0.1 1871 98.9 - (SB-PCL::FAST-METHOD SB-MOP:CLASS-DEFAULT-INITARGS (SB-PCL::SLOT-CLASS))
208 1 0.1 1 0.1 1872 98.9 - (SB-PCL::EMF SB-GRAY:STREAM-WRITE-CHAR)
209 1 0.1 1 0.1 1873 99.0 - (SB-PCL::FAST-METHOD INITIALIZE-INSTANCE (SB-PCL::SLOT-OBJECT))
210 1 0.1 1 0.1 1874 99.0 - SB-KERNEL:TWO-ARG-XOR
211 1 0.1 1 0.1 1875 99.1 - "foreign function sb_gettimeofday"
212 1 0.1 1 0.1 1876 99.2 - (SB-IMPL::OPTIMIZED-DATA-VECTOR-SET T)
213 1 0.1 1 0.1 1877 99.2 - "foreign function syscall"
214 0 0.0 1864 98.5 1877 99.2 - (FLET #:WITHOUT-INTERRUPTS-BODY-1139 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE)
215 0 0.0 1864 98.5 1877 99.2 - (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE)
216 0 0.0 1864 98.5 1877 99.2 - SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE
217 0 0.0 1864 98.5 1877 99.2 - "foreign function call_into_lisp"
218 0 0.0 1864 98.5 1877 99.2 - "foreign function new_thread_trampoline"
219 0 0.0 1862 98.4 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T))
220 0 0.0 1862 98.4 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T))
221 0 0.0 1862 98.4 1877 99.2 - (FLET HUNCHENTOOT::PROCESS-CONNECTION% :IN HUNCHENTOOT::HANDLE-INCOMING-CONNECTION%)
222 0 0.0 1862 98.4 1877 99.2 - (LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS)
223 0 0.0 1861 98.4 1877 99.2 - HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED
224 0 0.0 1861 98.4 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR T))
225 0 0.0 1860 98.3 1877 99.2 - (SB-PCL::EMF HUNCHENTOOT:PROCESS-REQUEST)
226 0 0.0 1858 98.2 1877 99.2 - (LAMBDA NIL :IN HUNCHENTOOT:PROCESS-REQUEST)
227 0 0.0 1858 98.2 1877 99.2 - HUNCHENSOCKET::CALL-WITH-NEW-CLIENT-FOR-RESOURCE
228 0 0.0 186 9.8 1877 99.2 - (LABELS SB-IMPL::HANDLE-IT :IN SB-KERNEL:OUTPUT-OBJECT)
229 0 0.0 10 0.5 1877 99.2 - (FLET SB-IMPL::COPY-TO-BUFFER :IN SB-IMPL::BUFFER-OUTPUT)
230 0 0.0 8 0.4 1877 99.2 - SB-PCL::MAYBE-CALL-CTOR
231 0 0.0 3 0.2 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-REQUEST (T))
232 0 0.0 2 0.1 1877 99.2 - SWANK::AUTO-FLUSH-LOOP
233 0 0.0 2 0.1 1877 99.2 - HUNCHENTOOT::SEND-RESPONSE
234 0 0.0 2 0.1 1877 99.2 - HUNCHENTOOT::START-OUTPUT
235 0 0.0 1 0.1 1877 99.2 - INIT-SESSION
236 0 0.0 1 0.1 1877 99.2 - (FLET #:WRAPPER715 :IN HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE)
237 0 0.0 1 0.1 1877 99.2 - SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1
238 0 0.0 1 0.1 1877 99.2 - HUNCHENSOCKET::FIND-WEBSOCKET-RESOURCE
239 0 0.0 1 0.1 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:ACCEPTOR-DISPATCH-REQUEST (HUNCHENSOCKET:WEBSOCKET-ACCEPTOR HUNCHENSOCKET::WEBSOCKET-REQUEST))
240 0 0.0 1 0.1 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:HANDLE-REQUEST (HUNCHENTOOT:ACCEPTOR HUNCHENTOOT:REQUEST))
241 0 0.0 1 0.1 1877 99.2 - SB-IMPL::INPUT-CHAR/UTF-8
242 0 0.0 1 0.1 1877 99.2 - (LAMBDA (&REST REST) :IN SB-IMPL::GET-EXTERNAL-FORMAT)
243 0 0.0 1 0.1 1877 99.2 - READ-CHAR
244 0 0.0 1 0.1 1877 99.2 - SB-IMPL::%READ-PRESERVING-WHITESPACE
245 0 0.0 1 0.1 1877 99.2 - READ
246 0 0.0 1 0.1 1877 99.2 - SB-IMPL::REPL-READ-FORM-FUN
247 0 0.0 1 0.1 1877 99.2 - SB-IMPL::REPL-FUN
248 0 0.0 1 0.1 1877 99.2 - (LAMBDA NIL :IN SB-IMPL::TOPLEVEL-REPL)
249 0 0.0 1 0.1 1877 99.2 - SB-IMPL::%WITH-REBOUND-IO-SYNTAX
250 0 0.0 1 0.1 1877 99.2 - SB-IMPL::TOPLEVEL-REPL
251 0 0.0 1 0.1 1877 99.2 - SB-IMPL::TOPLEVEL-INIT
252 0 0.0 1 0.1 1877 99.2 - (FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SB-EXT:SAVE-LISP-AND-DIE)
253 0 0.0 1 0.1 1877 99.2 - (LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE)
254 0 0.0 1 0.1 1877 99.2 - SWANK/BACKEND:CALL-WITH-LOCK-HELD
255 0 0.0 1 0.1 1877 99.2 - (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FINISH-OUTPUT (SWANK/GRAY::SLIME-OUTPUT-STREAM))
256 0 0.0 1 0.1 1877 99.2 - (FLET #:FORM-FUN-3091 :IN SB-GRAY:STREAM-FORCE-OUTPUT)
257 0 0.0 1 0.1 1877 99.2 - (SB-PCL::FAST-METHOD SB-GRAY:STREAM-FORCE-OUTPUT :AROUND (SWANK/GRAY::SLIME-OUTPUT-STREAM))
258 0 0.0 1 0.1 1877 99.2 - CHUNGA:READ-HTTP-HEADERS
259 0 0.0 1 0.1 1877 99.2 - HUNCHENTOOT::GET-REQUEST-DATA
260 0 0.0 1 0.1 1877 99.2 - PRINC
261 0 0.0 1 0.1 1877 99.2 - (LAMBDA (STREAM #:FORMAT-ARG216 #:FORMAT-ARG217 #:FORMAT-ARG219 #:FORMAT-ARG221 &REST SB-FORMAT::ARGS) :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/hunchentoot-v1.2.38/headers.lisp")
262 0 0.0 1 0.1 1877 99.2 - FORMAT
263 0 0.0 1 0.1 1877 99.2 - SB-IMPL::FINISH-FD-STREAM-OUTPUT
264 0 0.0 1 0.1 1877 99.2 - FINISH-OUTPUT
265 0 0.0 1 0.1 1877 99.2 - (FLET #:WITHOUT-INTERRUPTS-BODY-654 :IN SB-THREAD::%CONDITION-WAIT)
266 0 0.0 1 0.1 1877 99.2 - SB-THREAD:CONDITION-WAIT
267 0 0.0 1 0.1 1877 99.2 - (FLET SWANK/BACKEND:RECEIVE-IF :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp")
268 0 0.0 1 0.1 1877 99.2 - SWANK::WAIT-FOR-EVENT
269 0 0.0 1 0.1 1877 99.2 - SWANK::SLDB-LOOP
270 0 0.0 1 0.1 1877 99.2 - (FLET SWANK/BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp")
271 0 0.0 1 0.1 1877 99.2 - SWANK::DEBUG-IN-EMACS
272 0 0.0 1 0.1 1877 99.2 - SWANK/SBCL::CALL-WITH-BREAK-HOOK
273 0 0.0 1 0.1 1877 99.2 - (FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.20/swank/sbcl.lisp")
274 0 0.0 1 0.1 1877 99.2 - SWANK::CALL-WITH-BINDINGS
275 0 0.0 1 0.1 1877 99.2 - SWANK:INVOKE-SLIME-DEBUGGER
276 0 0.0 1 0.1 1877 99.2 - SWANK:SWANK-DEBUGGER-HOOK
277 0 0.0 1 0.1 1877 99.2 - SB-DEBUG::RUN-HOOK
278 0 0.0 1 0.1 1877 99.2 - INVOKE-DEBUGGER
279 0 0.0 1 0.1 1877 99.2 - (SB-PCL::FAST-METHOD HUNCHENTOOT:MAYBE-INVOKE-DEBUGGER (T))
280 0 0.0 1 0.1 1877 99.2 - (FLET #:H0 :IN HUNCHENTOOT:PROCESS-REQUEST)
281 0 0.0 1 0.1 1877 99.2 - SIGNAL
282 0 0.0 1 0.1 1877 99.2 - ERROR
I tried gprof2dot ./prof.out
but got error: unexpected end of file
I resolved this error accidentally by digging into the source code after many days since I encounter it for the first time, it will be helpful if there is some more useful message.
I try to get familiar with gprof profiling and use gprof2dot to visualize the results. The used gcc is a cross compiler that produces Amiga executables. gprof2dot produces pretty pictures for big projects.. Now I have an understanding problem. Please see the attached tiny example. In the produced picture I see no main(). Is that abug or am I doing something wrong?
gprof test | gprof2dot -n0 -e0 | dot -Tpng -o output.png && mirage output.png
granularity: each sample hit covers 2 byte(s) for 100.00% of 0.02 seconds
index % time self children called name
<spontaneous>
[1] 100.0 0.02 0.00 strlen [1]
-----------------------------------------------
0.00 0.00 1/1 main [53]
[2] 0.0 0.00 0.00 1 fct_1 [2]
0.00 0.00 1/1 fct_2 [3]
-----------------------------------------------
0.00 0.00 1/1 fct_1 [2]
[3] 0.0 0.00 0.00 1 fct_2 [3]
-----------------------------------------------
Thanks to @barakshelef for #32 .
Yet it doesn't work with callgrind:
$ python3 ~/bin/gprof2dot.py -p $MODNAME -f callgrind callgrind.out.* > /tmp/1.dot
Traceback (most recent call last):
File "$HOME/bin/gprof2dot.py", line 3328, in <module>
main()
File "$HOME/bin/gprof2dot.py", line 3309, in main
profile.prune(options.node_thres/100.0, options.edge_thres/100.0, options.filter_paths, options.color_nodes_by_selftime)
File "$HOME/bin/gprof2dot.py", line 717, in prune
if paths and not any(function.filename.startswith(path) for path in paths):
File "$HOME/bin/gprof2dot.py", line 717, in <genexpr>
if paths and not any(function.filename.startswith(path) for path in paths):
AttributeError: 'NoneType' object has no attribute 'startswith'
Possible to fix?
When running gprof2dot.py on my prof file the following assertion is thrown:
...
File "./gprof2dot.py", line 558, in _integrate_cycle
assert partial == max(partials.values())
After having modified the line 558 to:
assert partial == max(partials.values()) , "partial=%r, max(partials.values)=%r, partial=max(partials.values)=%r" % (str(partial), str(max(partials.values())), str(partial - max(partials.values())))
more details are shown:
File "./gprof2dot.py", line 558, in _integrate_cycle
assert partial == max(partials.values()) , "partial=%r, max(partials.values)=%r, partial=max(partials.values)=%r" % (str(partial), str(max(partials.values())), str(partial - max(partials.values())))
AssertionError: partial='2.50626729881e-07', max(partials.values)='2.50626729881e-07', partial-max(partials.values)='-5.29395592034e-23'
The result is shown on 95% of runs of gprof2dot.py script on the varying perf output file.
Please could we modify the script to be more resilient against roundoff errors? e.g.:
if partial != 0.0:
<tab>assert abs(partial - max(partials.values())) / abs(partial) <= 1e-7
I too am seeing this issue with 2 different (large) oprofile outputs. Commenting out the line fixes the problem, and produces dot files that can then be converted to png for display. Attaching both files.
Running on a recent version of Ubuntu running under virtualbox.
I've a .prof
file exported with the flag --kcachegrind
while running django-extention - runprofileserver
. The file looks like this: users.001928ms.1439448963.prof
Based upon the help, I found that I've to format it well first and then export .dot
file to make the png
.
Here's the what I ran for formatting and generating .dot
file.
$ gprof2dot --format=callgrind --output=output.dot users.001928ms.1439448963.prof
The error I got:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/bin/gprof2dot", line 9, in <module>
load_entry_point('gprof2dot==2015.2.3', 'console_scripts', 'gprof2dot')()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gprof2dot.py", line 3145, in main
profile = parser.parse()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gprof2dot.py", line 1565, in parse
self.profile.integrate(TOTAL_TIME_RATIO, TIME_RATIO)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gprof2dot.py", line 478, in integrate
self._integrate_function(function, outevent, inevent)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gprof2dot.py", line 483, in _integrate_function
return self._integrate_cycle(function.cycle, outevent, inevent)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gprof2dot.py", line 538, in _integrate_cycle
assert abs(call_ratio*total - partial) <= 0.001*call_ratio*total
AssertionError
Any luck / help about it? Why gprof2dot
is crashing?
Hi Team,
I tried testing gprof2dot package on Arm64 architectures and it is working successfully same as amd64 architecture result and there are no test cases passing. Here are the GHA logs:
GHA log: https://github.com/bhumikapaharia/gprof2dot/runs/3586927137?check_suite_focus=true
Could you please let me know if I am missing something here for running the test cases? It will be really helpful to run the test cases for analysis of the package.
Sometimes it is useful to draw attention to functions which have high self-time rather than total-time. (For example, to guide optimisation effort it can be desirable to focus on time-intensive core functions, with minimal distraction by the calling layers of light-weight wrapper functions.) I think it would be good if gprof2dot had a command line argument to colour nodes by self-time instead of total-time. It may also be worth switching to a smaller default skew value (since self-time < total-time).
Currently gprof2dot computes weights separately for functions and calls, but the same function weights are used for both pruning the graph (in Profile.prune) and for colouring the nodes (in the Dotwriter class). I think it would be undesirable to prune by self-time (because important context like "main" functions may be cut otherwise). The function weights are computed in Profile.prune, which has access to both total-time (TOTAL_TIME_RATIO) and self-time (TIME_RATIO). At present, one easy way to change the node colouring (and preserve the current pruning) is at the very end of Profile.prune (currently at line 648) to "compute the prune ratios" a second time (but differently):
colour_nodes_by_selftime = True
if colour_nodes_by_selftime:
for function in compat_itervalues(self.functions):
try:
function.weight = function[TIME_RATIO]
except UndefinedEvent:
pass
Hello. I am trying to exclude some nodes from my graph so that it can be less cluttered. Unfortunately, though, I was unable to find documentation on how to use the --path option.
This is my graph:
What I'd like to do is remove:
These are all methods of an external library (GitPython), so that is why I'd like to remove them.
Is this possible using the --path option (or with some others)? Could you please provide an example of how to achieve this?
Thank you in advance.
I have a .prof
file, which is generated by python 3.9.2 which is built into Blender 2.93.1.
Now I try to parse it with my system's python 3.9.2:
[portnov]$ python3 ./gprof2dot.py /tmp/test.prof master [9:58]
Traceback (most recent call last):
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 3555, in <module>
main()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 3509, in main
profile = parser.parse()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1322, in parse
self.parse_cg()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1304, in parse_cg
while not self._cg_header_re.match(self.readline()):
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1142, in readline
line = self.fp.readline()
File "/usr/lib/python3.9/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfb in position 0: invalid start byte
I also tried with Blender's python, just in case the problem is in python's compilation options:
[portnov]$ ~/soft/blender-2.93.1-linux-x64/2.93/python/bin/python3.9 ./gprof2dot.py /tmp/test.prof master [10:01]
Traceback (most recent call last):
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 3555, in <module>
main()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 3509, in main
profile = parser.parse()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1322, in parse
self.parse_cg()
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1304, in parse_cg
while not self._cg_header_re.match(self.readline()):
File "/home/portnov/src/gprof2dot/./gprof2dot.py", line 1142, in readline
line = self.fp.readline()
File "/home/portnov/soft/blender-2.93.1-linux-x64/2.93/python/lib/python3.9/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfb in position 0: invalid start byte
No luck either :/
Attaching prof file:
test.zip
Also note: https://github.com/baverman/flameprof tool parses the same file successfully.
I'm on debian jessie and the gprof version there (2.25) produces output that gprof2dot can't seem to parse.
[debian-x1]$ gprof -v
GNU gprof (GNU Binutils for Debian) 2.25
Based on BSD gprof, copyright 1983 Regents of the University of California.
This program is free software. This program has absolutely no warranty.
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
61.39 4.10 4.10 ai_best_move_rec
17.52 5.27 1.17 cmp_rev
8.76 5.86 0.59 grid_block_add
6.89 6.32 0.46 grid_block_apply_move
3.89 6.58 0.26 grid_block_drop
0.75 6.63 0.05 grid_clear_lines
0.45 6.66 0.03 block_move
0.15 6.67 0.01 grid_print
0.15 6.68 0.01 shape_stream_peek
0.07 6.68 0.01 grid_block_remove
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
Copyright (C) 2012-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Traceback:
$ ./gprof2dot.py < prof
error: unexpected end of file
Traceback (most recent call last):
File "./gprof2dot.py", line 3329, in <module>
main()
File "./gprof2dot.py", line 3290, in main
profile = parser.parse()
File "./gprof2dot.py", line 1275, in parse
self.parse_cg()
File "./gprof2dot.py", line 1257, in parse_cg
while not self._cg_header_re.match(self.readline()):
File "./gprof2dot.py", line 1097, in readline
import traceback; traceback.print_exc()
File "/usr/lib/python3.4/traceback.py", line 252, in print_exc
print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
File "/usr/lib/python3.4/traceback.py", line 169, in print_exception
for line in _format_exception_iter(etype, value, tb, limit, chain):
File "/usr/lib/python3.4/traceback.py", line 146, in _format_exception_iter
for value, tb in values:
File "/usr/lib/python3.4/traceback.py", line 125, in _iter_chain
context = exc.__context__
AttributeError: 'NoneType' object has no attribute '__context__'
Using the version from brew I am getting the following:
brew info gprof2dot
gprof2dot: stable 2015.02.03 (bottled), HEAD
Convert the output from many profilers into a Graphviz dot graph.
https://github.com/jrfonseca/gprof2dot
/usr/local/Cellar/gprof2dot/2015.02.03 (10 files, 202.0K) *
Poured from bottle on 2016-10-12 at 13:32:44
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gprof2dot.rb
==> Dependencies
Recommended: graphviz ✔
==> Options
--without-graphviz
Build without graphviz support
--HEAD
Install HEAD version
Traceback (most recent call last):
File "/usr/local/Cellar/gprof2dot/2015.02.03/libexec/bin/gprof2dot", line 9, in
load_entry_point('gprof2dot==2015.02.03', 'console_scripts', 'gprof2dot')()
File "/usr/local/Cellar/gprof2dot/2015.02.03/libexec/lib/python2.7/site-packages/gprof2dot.py", line 3139, in main
parser = Format(*args)
File "/usr/local/Cellar/gprof2dot/2015.02.03/libexec/lib/python2.7/site-packages/gprof2dot.py", line 2565, in init
self.stats = hotshot.stats.load(filename[0])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hotshot/stats.py", line 12, in load
return StatsLoader(filename).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hotshot/stats.py", line 29, in load
for event in log:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hotshot/log.py", line 98, in next
what, tdelta, fileno, lineno = self._nextitem()
ValueError: unknown record type in log file
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.