Changeset 029cbc0


Ignore:
Timestamp:
Jun 16, 2021, 2:30:32 PM (7 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
jacob/cs343-translation, master, new-ast-unique-expr
Children:
5a4f1a8
Parents:
edebbf7
Message:

Andrew MMath: Performance feedback is a bit stranger as the content is still unknown. (5/6 files done.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/andrew_beach_MMath/performance.tex

    redebbf7 r029cbc0  
    44\textbf{Just because of the stage of testing there are design notes for
    55the tests as well as commentary on them.}
     6\todo{Revisit organization of the performance chapter once tests are chosen.}
     7% What are good tests for resumption?
    68
    79Performance has been of secondary importance for most of this project.
    8 The driving for has been to get the features working, the only performance
    9 requirements were to make sure the tests for correctness rain in a reasonable
     10Instead, the focus has been to get the features working. The only performance
     11requirements is to ensure the tests for correctness run in a reasonable
    1012amount of time.
    11 Still this is an implementation others could use for similar prototypes and
    12 so the results still have some use.
    1313
     14%\section{Termination Comparison}
    1415\section{Test Set-Up}
    1516Tests will be run on \CFA, C++ and Java.
     
    1718C++ is the most comparable language because both it and \CFA use the same
    1819framework, libunwind.
    19 In fact the comparison is almost entirely a quality of implementation
     20In fact, the comparison is almost entirely a quality of implementation
    2021comparison. \CFA's EHM has had significantly less time to be optimized and
    2122does not generate its own assembly. It does have a slight advantage in that
    2223there are some features it does not handle.
    2324
    24 % Some languages I left out:
    25 % Python: Its a scripting language, different
    26 % uC++: Not well known and should the same results as C++, except for
    27 %   resumption which should be the same.
    28 \todo{Can we find a good language to compare resumptions in.}
     25Java is another very popular language with similar termination semantics.
     26It is implemented in a very different environment, a virtual machine with
     27garbage collection.
     28It also implements the finally clause on try blocks allowing for a direct
     29feature-to-feature comparison.
    2930
    30 All tests will be run inside a main loop which will perform the test
    31 repeatedly. This is to avoid letting and start-up or tear-down time from
     31All tests are run inside a main loop which will perform the test
     32repeatedly. This is to avoids start-up or tear-down time from
    3233affecting the timing results.
    33 This also means that tests cannot terminate the program, which does limit
    34 how tests can be implemented. There are catch-alls to keep unhandled
    35 exceptions from terminating the program.
     34A consequence of this is that tests cannot terminate the program,
     35which does limit how tests can be implemented.
     36There are catch-alls to keep unhandled
     37exceptions from terminating tests.
    3638
    37 The exceptions used in this test will always be a new exception based off of
    38 the base exception. This should minimize and preformance differences based
     39The exceptions used in these tests will always be a exception based off of
     40the base exception. This requirement minimizes performance differences based
    3941on the object model.
    40 Catch-alls will be done by catching the root exception type (not using \Cpp's
     42Catch-alls are done by catching the root exception type (not using \Cpp's
    4143\code{C++}{catch(...)}).
    4244
     
    4547
    4648\section{Tests}
     49The following tests were selected to test the performance of different
     50components of the exception system.
     51The should provide a guide as to where the EHM's costs can be found.
     52
    4753\paragraph{Raise/Handle}
    4854What is the basic cost to raise and handle an exception?
    4955
    50 There are a number of factors that can effect this, for \CFA this includes
    51 the type of raise,
     56There are a number of factors that can effect this.
     57For \CFA this includes the type of raise,
    5258
    5359Main loop, pass through a catch-all, call through some empty helper functions
     
    6773is thrown?
    6874
    69 This is the simplist pattern to test as it is a simple matter of entering
     75This test is a simple pattern of entering
    7076and leaving a try statement.
    7177
     
    7480
    7581\paragraph{Re-throw and Conditional-Catch}
    76 How expencive it is to run a non-exception type check for a handler?
     82How expensive it is to run a non-exception type check for a handler?
    7783
    7884In this case different languages approach this problem differently, either
     
    100106%(I haven't actually figured out how to compare this, probably using something
    101107%related to -fexceptions.)
     108
     109% Some languages I left out:
     110% Python: Its a scripting language, different
     111% uC++: Not well known and should the same results as C++, except for
     112%   resumption which should be the same.
     113
     114%\section{Resumption Comparison}
     115\todo{Can we find a good language to compare resumptions in.}
Note: See TracChangeset for help on using the changeset viewer.