Changeset e8a7b66d for doc


Ignore:
Timestamp:
Apr 11, 2026, 12:02:44 AM (27 hours ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
75ba2fa6
Parents:
e2e927e
Message:

switch list perf winner-loser plot to uniform treatment of all first-order effects; add discussion of key conclusion that fx is not your big-ticket item

Location:
doc/theses/mike_brooks_MMath
Files:
3 added
3 deleted
1 edited

Legend:

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

    re2e927e re8a7b66d  
    10351035\begin{figure}
    10361036  \centering
    1037   \includegraphics{plot-list-op-fx.pdf}
    1038   \caption{Histogram of operation durations, decomposed by non-physical factors.
    1039   The twelve-way by-operation breakdown, and the four-way by-framework breakdown, each divides the entire population of test results into its mutually disjoint constituents.}
    1040   \label{fig:plot-list-op-fx}
    1041 \end{figure}
    1042 
    1043 \VRef[Figure]{fig:plot-list-op-fx} gives this non-physical decomposition.
    1044 
    1045 \MLB{Peter, stop here.  Discussion of these non-physical factos is coming.}
     1037  \includegraphics{plot-list-1ord.pdf}
     1038  \caption{Histogram of operation durations, decomposed by all first-order effects.
     1039  Each of the three breakdowns divides the entire population of test results into its mutually disjoint constituents.
     1040  \MLB{missing: overlay of means}}
     1041  \label{fig:plot-list-1ord}
     1042\end{figure}
     1043
     1044\MLB{Peter, resume at full strength here.  This first-order comparison is the key takeaway from my recent analysis work.}
     1045
     1046\VRef[Figure]{fig:plot-list-1ord} gives the first-order effects.
     1047Its first breakdown, Machine--Size-Zone, shows the effects of an insert/remove's physical situation.
     1048The Intel runs faster than the AMD; the small zone runs faster than the medium zone.
     1049The size effect is more pronounced on the AMD than it is on the Intel.
     1050
     1051These facts stated, you will not be chosing between these particular mahines or whether to run at one of these specific size zones.
     1052The key takeaway from the physical comparison is the context it establishes for interpreting the framework comparison following.
     1053Both the particulars of a the machine's cache design, and a list length's effect on the program's cache friendliness, affect add/remove speed in the manner illlustrated in this breakdown.
     1054Specifically, a 20\% standard deviation exists here, between the means four physical-effect categories.
     1055That is, if you are running on an unknown machine, at a scale above anomaly-prone individuals, and below where major LLC caching effects take over the general intrusive-list advantage, but with an unknown relationship to the sizing of your fickle low-level caches, you are likely to experience an unpredictable speed impact on the order of 20\%.
     1056
     1057A similar situation comes from \VRef[Figure]{fig:plot-list-1ord}'s second comparison, by operation type.
     1058Specific interactions like framework X doing better on stacks do occur; a selection of them is addressed in \MLB{TODO: cross reference}.
     1059But they are so irrelevant to the issue of picking a winning framework that it is sufficient here to number the operations opaquely.
     1060Whether a given list implementation is suitable for a language's general library succeeds or fails without knowledge of whether your use will have stack or queue movement.
     1061So you face another lottery, with a likely win-loss range of the standard deviation of the individual operations' means: 9\%.
     1062
     1063This context helps interpret \VRef[Figure]{fig:plot-list-1ord}'s final comparison, by framework.
     1064In this result, \CFA runs similarly to \uCpp and LQ-@list@ runs similarly to @tailq@.
     1065The standard deviation of the frameworks' means is 8\%.
     1066Framework choice has, therefore, less impact on your speed than the lottery tickets you already hold.
     1067
     1068Now, the LQs do indeed beat the UW languages by 15\%, a fact explored further in \MLB{TODO: xref}.
     1069But so too does operation VIII typically beat operation IV by 38\%.
     1070As does a small size on the Intel typically beat a medium size on the AMD by 66\%.
     1071Framework choice is simply not where you stand to win or lose the most.
     1072
     1073\MLB{ TODO: find a home for these original conclusions:
     1074cfa-upp similarity holde for all halves by movement or polarity;
     1075splitting on accessor, \CFA has a poor result on element removal, LQ-list has a great result on the other accessors, and uC++ is unaffected. }
     1076
     1077
     1078\MLB{Peter, stop here.  Rest of the section is coming.}
    10461079
    10471080\begin{comment}
     
    10531086Overall, LQ-tailq does the best at short lengths but loses out above a dozen elements.
    10541087\end{comment}
    1055 
    1056 
    1057 \MLB{Here is the conclusion of the earlier analysis. It basically stands, but needs refreshing.}
    1058 In the grand total, and in all halves by movement or polarity, \CFA and uC++ are equivalent, while LQ-@list@ beats them slightly.
    1059 Splitting on accessor, \CFA has a poor result on element removal, LQ-@list@ has a great result on the other accessors, and uC++ is unaffected.
    1060 The unseen @tailq@ dominates across every category and beats \CFA and uC++ by 15--20\%.
    10611088
    10621089% \begin{figure}
Note: See TracChangeset for help on using the changeset viewer.