Execution proﬁling with KaiProblem: Traditional code proﬁlers are driven by the method stack, discarding the notion of sending messagesWhy the problem is important: How to answer to “Is there a slow function that is called too often?”Solution: An intuitive visual representation of the execution that visually compare the time spent and the number of executions 3
B C A cached makeabsoluteBounds call abs instead of ab A C B C 14
B C A D cached make display:on:absoluteBounds call absoluteBounds instead of absoluteBoundsFor: A C B C 15
B C A D cached make display:on:absoluteBounds call absoluteBounds instead of absoluteBoundsFor: A C B C 16
Test coverage with HapaoProblem: Traditional code coverage tools have a binary view of the worldWhy the problem is important: Which method should you test ﬁrst in order to increase the coverage? Is my code well covered or not?Solution: An intuitive visual representation of a qualitative assessment of the coverage 17
Test blueprint C1 Legend for methods (inner boxes) # calling methods d complexity # executions c invocation on self C2 red = not executed blue = abstractDEMO 18
Successive improvementVersion 2.2 Version 2.3 Version 2.4 Version 2.5 27.27% 54.54% 87.71% 100% 19
Multidimentional proﬁlingr methods XMLTokenizer>>nextNamer of executions source code node red: change color black: do not change m1 # messages < than before # messages > than before m2 and m1 invokes m2 XMLNestedStreamReader>>atEnd # executions <= than before # messages > than before and # executions > than before # messages = than beforehis method did not exist before
ConclusionLittle innovation in the tools we commonly use Proﬁlers, debuggers, testing tools have not signiﬁcantly evolvedFantastic opportunities for improvementKai, Hapao and Roassal are just a beginningFeel free to provide feedback on our tool 30
Spy @ Cincom Store Spy @ SqueakSource Roassal @ ... ObjectProﬁle.com Moose-Test-Core.13 Moose-Test-Core.48 Moose-Core.313 Moose-Core.326 21.42% 100%Thanks to 56.86% 100% ESUG Chris T 73.58% 100% Cincom All of you guys! 68.25% 36.78% 96.66% 64.55% 0% 100%
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.