Changeset 0f9c67bf


Ignore:
Timestamp:
Apr 13, 2026, 10:42:12 AM (2 weeks ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
68af77b
Parents:
5b21636b
Message:

establish and nail down definitions of operations and size zones

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/list.tex

    r5b21636b r0f9c67bf  
    22
    33This chapter presents my work on designing and building a linked-list library for \CFA.
    4 Due to time limitations and the needs expressed by the \CFA runtime developers, I focussed on providing a doubly-linked list, and its bidirectionally iterators for traversal.
     4Due to time limitations and the needs expressed by the \CFA runtime developers, I focussed on providing a doubly-linked list, and its bidirectional iterators for traversal.
    55Simpler data-structures, like stack and queue, can be built from the doubly-linked mechanism with only a slight storage/performance cost because of the unused link field.
    6 Reducing to data-structures with a single link follows directly from the more complex doubly-links and its iterators.
     6Reducing to data-structures with a single link follows directly from the more complex double links and its iterators.
    77
    88
     
    666666This experiment takes the position that:
    667667\begin{itemize}[leftmargin=*]
    668         \item The total time to add and remove is relevant \vs individual times for add and remove.
     668        \item The total time to add and remove is relevant, as opposed to having one individual time for adding and a separate time for removing.
    669669                  Adds without removes quickly fill memory;
    670670                  removes without adds is meaningless.
     
    673673                \item[movement]
    674674                  Is the add/remove applied to a stack, queue, or something else?
     675                  In these experiments, strict stack and queue shapes are tested (two movements).
    675676                \item[polarity]
    676677                  In which direction does the action apply?
    677678                  For a queue, do items flow from first to last or last to first?
    678679                  For a stack, is the first or last end used for adding and removing?
     680                  In these experiments, both polarities are considered, labelled insert-first and insert-last (two polarities).
    679681                \item[accessor]
    680                   Is an add/remove location given by a list head's first/last, or by a reference to an individual element?
     682                  Is an add/remove location given by a list head's first/last (@insertFirst@, @removeLast@), or by a reference to an individual element (@insertAfter@, @remove@ of element)?
     683                  In these experiments, the (three) accessors are:
     684                  \begin{itemize}
     685                  \item
     686              inserts and removes both through the head ("all-head")
     687                  \item
     688          insert by element and remove through the head ("insert-element")
     689                  \item
     690                  insert through head and remove by element ("remove-element")
     691                  \end{itemize}
    681692                \end{description}
     693        \item So, an "operating scenario" is a specific selection of movement, polarity and accessor. These experiments run twelve operating scenarios.
    682694        \item Speed differences caused by the host machine's memory hierarchy need to be identified and explained,
    683695                  but do not represent advantages of one linked-list implementation over another.
     
    691703\begin{itemize}
    692704        \item intrusive lists performing (majorly) differently than wrapped lists,
    693         \item a space of (minor) performance differences among the intrusive lists.
     705        \item a space of (lesser) performance differences among the intrusive lists.
    694706\end{itemize}
    695707
     708In the result analysis, a where list length is a performance-influencing factor, once truly ``large'' lengths have been dismissed, these zones are identified as representing different patterns:
     709\begin{description}
     710        \item[size zone ``small''] lists of 4--16 elements
     711        \item[size zone ``medium''] lists of 50--200 elements
     712\end{description}
     713Each zone buckets four specific sizes at which trials are run.
    696714
    697715\subsubsection{Experiment setup}
     
    11701188
    11711189In spite of these complex interactions, a couple spots of stability can be analyzed.
    1172 In these examples, the size zones 4--16, ``small,'' and above 48, ``medium,'' covering four specific sizes apiece, each tends to show a simple winner/loser story.
     1190In these examples, the two defined Size Zones (4--16 being ``small,'' and above 50 being ``medium,'') covering four specific sizes apiece, each tends to show a simple winner/loser story.
    11731191Manual inspection of other such plots (not detailed) showed that this quality is generally upheld.
    11741192So these zones are used for basing comparison.
Note: See TracChangeset for help on using the changeset viewer.