SlideShare uma empresa Scribd logo
1 de 53
Domain-Specific
   Profiling
Alexandre Bergel, Oscar Nierstrasz,
  Lukas Renggli and Jorge Ressia
Profiling:
Is the activity of analyzing a program
execution.
Traditional Profilers
Profile

Source            Report
Examples
CPU time
Mondrian
o mpl exity
S     m C ucasse 2003
  yste d D  n
     Lanza a
lit tle impact on the overall execution. T his sampling technique is u
all mainstream profilers, such as JProfiler, Your K it, xprof [10], an
      Message Tally, the standard sampling-based profiler in Pharo Sm
tually describes the execution in terms of C P U consumption and i
each method of Mondrian:
54.8% {11501ms} MOCanvas > > drawOn:
 54.8% {11501ms} MORoot(MONode) > > displayOn:
  30.9% {6485ms} MONode > > displayOn:
    | 18.1% {3799ms} MOEdge > > displayOn:
       ...
    | 8.4% {1763ms} MOEdge > > displayOn:
    | | 8.0% {1679ms} MOStraightLineShape > > display:on:
    | | 2.6% {546ms} FormCanvas > > line:to:width:color:
      ...
  23.4% {4911ms} MOEdge > > displayOn:
      ...

   We can observe that the virtual machine spent about 54% o
the method displayOn: defined in the class MORoot. A root is the
nested node that contains all the nodes of the edges of the visua
general profiling information says that rendering nodes and edge
Domain-Specific P rofiling       3

C P U t i me p rofiling

                           Which is the relationship?
Mondrian [9] is an open and agile visualization engine. Mondrian describes a
visualization using a graph of (possibly nested) nodes and edges. In June 2010
a serious performance issue was raised1 . Tracking down the cause of the poor
performance was not trivial. We first used a standard sample-based profiler.
      E xecution sampling approximates the time spent in an application’s methods
by periodically stopping a program and recording the current set of methods
under executions. Such a profiling technique is relatively accurate since it has
lit tle impact on the overall execution. T his sampling technique is used by almost
all mainstream profilers, such as JProfiler, Your K it, xprof [10], and hprof.
      Message Tally, the standard sampling-based profiler in Pharo Smalltalk 2 , tex-
tually describes the execution in terms of C P U consumption and invocation for
each method of Mondrian:
54.8% {11501ms} MOCanvas > > drawOn:
 54.8% {11501ms} MORoot(MONode) > > displayOn:
  30.9% {6485ms} MONode > > displayOn:




                                                                      ?
    | 18.1% {3799ms} MOEdge > > displayOn:
       ...
    | 8.4% {1763ms} MOEdge > > displayOn:
    | | 8.0% {1679ms} MOStraightLineShape > > display:on:
    | | 2.6% {546ms} FormCanvas > > line:to:width:color:
      ...
  23.4% {4911ms} MOEdge > > displayOn:
      ...

    We can observe that the virtual machine spent about 54% of its time in
the method displayOn: defined in the class MORoot. A root is the unique non-
nested node that contains all the nodes of the edges of the visualization. T his
general profiling information says that rendering nodes and edges consumes a
great share of the C P U time, but it does not help in pinpointing which nodes
and edges are responsible for the time spent. Not all graphical elements equally
consume resources.
    Traditional execution sampling profilers center their result on the frames of
the execution stack and completely ignore the identity of the ob ject that received
the method call and its arguments. As a consequence, it is hard to track down
which ob jects cause the slowdown. For the example above, the traditional profiler
says that we spent 30.9% in MONode > > displayOn: without saying which nodes
were actually refreshed too often.

C overage
Petit Parser is a parsing framework combining ideas from scannerless parsing,
Coverage
scg.unibe.ch/research/helvetia/petitparser
Java Grammar



         210 Methods

100% coverage to build grammar
Java Grammar



              210 Methods

     100% coverage to build grammar

Is each production of the grammar covered?
Profile

Source            Report




         Domain
Domain




Source   Traditional
 Code     Profilers
Domain-Specific
Domain
            Profilers




Source     Traditional
 Code       Profilers
What does it
  mean?
Specify
Capture
Present
MetaSpy
Instrumenter   Profiler
Domain
 Domain
 Object


 Domain
 Object


 Domain
 Object
Domain
 Domain
 Object


 Domain
 Object


 Domain
 Object
Domain
 Domain
 Object


 Domain
 Object


 Domain
 Object
Instrumentation strategies                                             Profilers
                   MetaInstrumenter                                                Profiler
                 handler                                                model
                 install                                                strategies
                 setUp                                                  observeClass:do:
                 tearDown                                               observeClass:selector:do
                 uninstall                                              observePackage:do:
                                                                        observePackagesMatching:do:
                                                                        observeParser:in:do:
                                                                        install
 Announcement    MethodInstrumenter    ParserInstrumenter               setUp
  Instrumenter   theClass             parser                            tearDown
announcer        selector             grammar                           uninstall
install          methdo               replacement
uninstall        doesNotUnderstand:   install
                 run:with:in:         uninstall
                 install
                 setUp                                MondrianProfiler       OmniBrowserProfiler          PetitParserProfiler
                 tearDown
                                                    setUp                   setUp                     setUp
                 uninstall
                                                    visualize               visualize                 visualize


                                                                        User provided classes
Specify the Domain interests
Capture the runtime
information
Present the results
Mondrian Profiler
o mpl exity
S     m Ccasse 2003
  yste Du
      Lanza,
MondrianProfiler>>setUp
self model root allNodes do: [ :node |
 self
  observeObject: node
  selector: #displayOn:
  do: [ ... counting ... ] ]
Profiler
PetitParserProfiler>>setUp
self model allParsers
  do: [ :parser |
      self
         observeParser: parser
         in: self grammar
         do: [ ... counting ... ] ]
Implementation
Instrumentation
Two options

Hooking to the Domain

Reflection
Reflection
scg.unibe.ch/research/
        bifrost
Organize the
 Meta-level
Explicit
Meta-objects
Class
         Instrumentation
           Meta-object




Object
Class
         Instrumentation
           Meta-object




Object
Class
             Instrumentation
               Meta-object




Instrumented Object
Partial Reflection
 Selective Reifications
     Unanticipated
  Runtime Integration
Adaptation Composition
Profile

Source
Profile

Source
Domain-specific
  Information
MetaSpy
          Domain-
Domain    Specific
          Profilers




Source   Traditional
 Code     Profilers

Mais conteúdo relacionado

Semelhante a Domain-Specific Profiling - TOOLS 2011

OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysis
lienhard
 
Architecture of a morphological malware detector
Architecture of a morphological malware detectorArchitecture of a morphological malware detector
Architecture of a morphological malware detector
UltraUploader
 
Android Nâng cao-Bài 9-Debug in Android Application Development
Android Nâng cao-Bài 9-Debug in Android Application Development Android Nâng cao-Bài 9-Debug in Android Application Development
Android Nâng cao-Bài 9-Debug in Android Application Development
Phuoc Nguyen
 
1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir Overview
PTIHPA
 
Iwsm2014 measuring cosmic software size from functional execution traces of...
Iwsm2014   measuring cosmic software size from functional execution traces of...Iwsm2014   measuring cosmic software size from functional execution traces of...
Iwsm2014 measuring cosmic software size from functional execution traces of...
Nesma
 
Measurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNetMeasurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNet
Vasyl Senko
 

Semelhante a Domain-Specific Profiling - TOOLS 2011 (20)

OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysis
 
Introduction Machine Learning by MyLittleAdventure
Introduction Machine Learning by MyLittleAdventureIntroduction Machine Learning by MyLittleAdventure
Introduction Machine Learning by MyLittleAdventure
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
Architecture of a morphological malware detector
Architecture of a morphological malware detectorArchitecture of a morphological malware detector
Architecture of a morphological malware detector
 
Android Nâng cao-Bài 9-Debug in Android Application Development
Android Nâng cao-Bài 9-Debug in Android Application Development Android Nâng cao-Bài 9-Debug in Android Application Development
Android Nâng cao-Bài 9-Debug in Android Application Development
 
Java Performance & Profiling
Java Performance & ProfilingJava Performance & Profiling
Java Performance & Profiling
 
1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir Overview
 
Android classes-in-pune-syllabus
Android classes-in-pune-syllabusAndroid classes-in-pune-syllabus
Android classes-in-pune-syllabus
 
Android training in Nagpur
Android training in Nagpur Android training in Nagpur
Android training in Nagpur
 
Code Quality Analysis
Code Quality AnalysisCode Quality Analysis
Code Quality Analysis
 
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
 
Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?
 
Beyond the basics of SonarQube: improve your Java(Script) code even further
Beyond the basics of SonarQube: improve your Java(Script) code even furtherBeyond the basics of SonarQube: improve your Java(Script) code even further
Beyond the basics of SonarQube: improve your Java(Script) code even further
 
An introduction to Machine Learning
An introduction to Machine LearningAn introduction to Machine Learning
An introduction to Machine Learning
 
2013 Lecture 5: AR Tools and Interaction
2013 Lecture 5: AR Tools and Interaction 2013 Lecture 5: AR Tools and Interaction
2013 Lecture 5: AR Tools and Interaction
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
 
Iwsm2014 measuring cosmic software size from functional execution traces of...
Iwsm2014   measuring cosmic software size from functional execution traces of...Iwsm2014   measuring cosmic software size from functional execution traces of...
Iwsm2014 measuring cosmic software size from functional execution traces of...
 
ASE02.ppt
ASE02.pptASE02.ppt
ASE02.ppt
 
Measurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNetMeasurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNet
 

Mais de Jorge Ressia (8)

Object-Centric Debugging
Object-Centric DebuggingObject-Centric Debugging
Object-Centric Debugging
 
Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011
 
Subjectopia tools2011
Subjectopia tools2011Subjectopia tools2011
Subjectopia tools2011
 
Advanced OO Design
Advanced OO DesignAdvanced OO Design
Advanced OO Design
 
Opal compiler
Opal compilerOpal compiler
Opal compiler
 
Live featureanalysis
Live featureanalysisLive featureanalysis
Live featureanalysis
 
Runtime evolution
Runtime evolutionRuntime evolution
Runtime evolution
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem Detection
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Domain-Specific Profiling - TOOLS 2011

  • 1. Domain-Specific Profiling Alexandre Bergel, Oscar Nierstrasz, Lukas Renggli and Jorge Ressia
  • 2. Profiling: Is the activity of analyzing a program execution.
  • 8.
  • 9. o mpl exity S m C ucasse 2003 yste d D n Lanza a
  • 10. lit tle impact on the overall execution. T his sampling technique is u all mainstream profilers, such as JProfiler, Your K it, xprof [10], an Message Tally, the standard sampling-based profiler in Pharo Sm tually describes the execution in terms of C P U consumption and i each method of Mondrian: 54.8% {11501ms} MOCanvas > > drawOn: 54.8% {11501ms} MORoot(MONode) > > displayOn: 30.9% {6485ms} MONode > > displayOn: | 18.1% {3799ms} MOEdge > > displayOn: ... | 8.4% {1763ms} MOEdge > > displayOn: | | 8.0% {1679ms} MOStraightLineShape > > display:on: | | 2.6% {546ms} FormCanvas > > line:to:width:color: ... 23.4% {4911ms} MOEdge > > displayOn: ... We can observe that the virtual machine spent about 54% o the method displayOn: defined in the class MORoot. A root is the nested node that contains all the nodes of the edges of the visua general profiling information says that rendering nodes and edge
  • 11. Domain-Specific P rofiling 3 C P U t i me p rofiling Which is the relationship? Mondrian [9] is an open and agile visualization engine. Mondrian describes a visualization using a graph of (possibly nested) nodes and edges. In June 2010 a serious performance issue was raised1 . Tracking down the cause of the poor performance was not trivial. We first used a standard sample-based profiler. E xecution sampling approximates the time spent in an application’s methods by periodically stopping a program and recording the current set of methods under executions. Such a profiling technique is relatively accurate since it has lit tle impact on the overall execution. T his sampling technique is used by almost all mainstream profilers, such as JProfiler, Your K it, xprof [10], and hprof. Message Tally, the standard sampling-based profiler in Pharo Smalltalk 2 , tex- tually describes the execution in terms of C P U consumption and invocation for each method of Mondrian: 54.8% {11501ms} MOCanvas > > drawOn: 54.8% {11501ms} MORoot(MONode) > > displayOn: 30.9% {6485ms} MONode > > displayOn: ? | 18.1% {3799ms} MOEdge > > displayOn: ... | 8.4% {1763ms} MOEdge > > displayOn: | | 8.0% {1679ms} MOStraightLineShape > > display:on: | | 2.6% {546ms} FormCanvas > > line:to:width:color: ... 23.4% {4911ms} MOEdge > > displayOn: ... We can observe that the virtual machine spent about 54% of its time in the method displayOn: defined in the class MORoot. A root is the unique non- nested node that contains all the nodes of the edges of the visualization. T his general profiling information says that rendering nodes and edges consumes a great share of the C P U time, but it does not help in pinpointing which nodes and edges are responsible for the time spent. Not all graphical elements equally consume resources. Traditional execution sampling profilers center their result on the frames of the execution stack and completely ignore the identity of the ob ject that received the method call and its arguments. As a consequence, it is hard to track down which ob jects cause the slowdown. For the example above, the traditional profiler says that we spent 30.9% in MONode > > displayOn: without saying which nodes were actually refreshed too often. C overage Petit Parser is a parsing framework combining ideas from scannerless parsing,
  • 14. Java Grammar 210 Methods 100% coverage to build grammar
  • 15.
  • 16. Java Grammar 210 Methods 100% coverage to build grammar Is each production of the grammar covered?
  • 17. Profile Source Report Domain
  • 18. Domain Source Traditional Code Profilers
  • 19. Domain-Specific Domain Profilers Source Traditional Code Profilers
  • 20. What does it mean?
  • 25. Instrumenter Profiler
  • 26. Domain Domain Object Domain Object Domain Object
  • 27. Domain Domain Object Domain Object Domain Object
  • 28. Domain Domain Object Domain Object Domain Object
  • 29. Instrumentation strategies Profilers MetaInstrumenter Profiler handler model install strategies setUp observeClass:do: tearDown observeClass:selector:do uninstall observePackage:do: observePackagesMatching:do: observeParser:in:do: install Announcement MethodInstrumenter ParserInstrumenter setUp Instrumenter theClass parser tearDown announcer selector grammar uninstall install methdo replacement uninstall doesNotUnderstand: install run:with:in: uninstall install setUp MondrianProfiler OmniBrowserProfiler PetitParserProfiler tearDown setUp setUp setUp uninstall visualize visualize visualize User provided classes
  • 30. Specify the Domain interests Capture the runtime information Present the results
  • 32.
  • 33. o mpl exity S m Ccasse 2003 yste Du Lanza,
  • 34. MondrianProfiler>>setUp self model root allNodes do: [ :node | self observeObject: node selector: #displayOn: do: [ ... counting ... ] ]
  • 35.
  • 37. PetitParserProfiler>>setUp self model allParsers do: [ :parser | self observeParser: parser in: self grammar do: [ ... counting ... ] ]
  • 38.
  • 41. Two options Hooking to the Domain Reflection
  • 46. Class Instrumentation Meta-object Object
  • 47. Class Instrumentation Meta-object Object
  • 48. Class Instrumentation Meta-object Instrumented Object
  • 49. Partial Reflection Selective Reifications Unanticipated Runtime Integration Adaptation Composition
  • 53. MetaSpy Domain- Domain Specific Profilers Source Traditional Code Profilers

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. Code profilers commonly employ execution sampling as the way to obtain dynamic run-time information\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. What is the relationship between this and the domain? picture again\n
  11. \n
  12. PetitParser is a parsing framework combining ideas from scannerless parsing, parser combinators, parsing expression grammars and packrat parsers to model grammars and parsers as objects that can be reconfigured dynamically.\n
  13. Rigorous test suites try to ensure that each part of the grammar is covered by tests and is well-specified according to the respective language standards. Validating that each production of the grammar is covered by the tests is a difficult activity. As mentioned previously, the traditional tools of the host language work at the method and statement level and thus cannot produce meaningful results in the context of PetitParser where the grammar is modeled as a graph of objects.\n
  14. This is a picture of the XML grammar\n
  15. Rigorous test suites try to ensure that each part of the grammar is covered by tests and is well-specified according to the respective language standards. Validating that each production of the grammar is covered by the tests is a difficult activity. As mentioned previously, the traditional tools of the host language work at the method and statement level and thus cannot produce meaningful results in the context of PetitParser where the grammar is modeled as a graph of objects.\n
  16. \n
  17. new dimension of problem-domain\n
  18. new dimension of problem-domain\n
  19. Specify the Domain interests\n Capture the runtime information\n Present the results\n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n\n
  26. \n\n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. Clicking and drag-and-dropping nodes refreshes the visualization, thus increasing the progress bar of the corresponding nodes. This profile helps identifying unnecessary rendering. We identified a situation in which nodes were refreshing without receiving user actions.\n
  33. \n
  34. What does observeParser do?\n
  35. \n
  36. \n
  37. Software instrumentation monitors the run-time behavior of a system to support a particular kind of analysis.\n
  38. \n
  39. \n
  40. \n
  41. We see that there are many different ways of doing reflection, adaptation, instrumentation, many are low level.\nAnd the ones that are highly flexible cannot break free from the limitations of the language.\n
  42. Adaptation semantic abstraction for composing meta-level structure and behavior.\n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. We need to reflect on the dynamic representation of a program, that is, the operational execution.\nThis is called Behavioral Reflection pioneered by Smith in the context of Lisp\n
  50. Behavioral reflection provides a way to intercept and change the execution of a program. It is concerned with execution events, i.e., method execution, message sends, or variable assignments. \n
  51. \n
  52. \n
  53. Code profilers commonly employ execution sampling as the way to obtain dynamic run-time information\n
  54. Code profilers commonly employ execution sampling as the way to obtain dynamic run-time information\n
  55. \n
  56. 1. identified the need for domain-specific profiling\n2. empirical validation of domain-specific profiling\n3. presented an infrastructure for domain-specific profiling\n