Changeset e8a7b66d for doc/theses/mike_brooks_MMath/list.tex
- Timestamp:
- Apr 11, 2026, 12:02:44 AM (40 hours ago)
- Branches:
- master
- Children:
- 75ba2fa6
- Parents:
- e2e927e
- File:
-
- 1 edited
-
doc/theses/mike_brooks_MMath/list.tex (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/mike_brooks_MMath/list.tex
re2e927e re8a7b66d 1035 1035 \begin{figure} 1036 1036 \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. 1047 Its first breakdown, Machine--Size-Zone, shows the effects of an insert/remove's physical situation. 1048 The Intel runs faster than the AMD; the small zone runs faster than the medium zone. 1049 The size effect is more pronounced on the AMD than it is on the Intel. 1050 1051 These facts stated, you will not be chosing between these particular mahines or whether to run at one of these specific size zones. 1052 The key takeaway from the physical comparison is the context it establishes for interpreting the framework comparison following. 1053 Both 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. 1054 Specifically, a 20\% standard deviation exists here, between the means four physical-effect categories. 1055 That 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 1057 A similar situation comes from \VRef[Figure]{fig:plot-list-1ord}'s second comparison, by operation type. 1058 Specific interactions like framework X doing better on stacks do occur; a selection of them is addressed in \MLB{TODO: cross reference}. 1059 But they are so irrelevant to the issue of picking a winning framework that it is sufficient here to number the operations opaquely. 1060 Whether 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. 1061 So you face another lottery, with a likely win-loss range of the standard deviation of the individual operations' means: 9\%. 1062 1063 This context helps interpret \VRef[Figure]{fig:plot-list-1ord}'s final comparison, by framework. 1064 In this result, \CFA runs similarly to \uCpp and LQ-@list@ runs similarly to @tailq@. 1065 The standard deviation of the frameworks' means is 8\%. 1066 Framework choice has, therefore, less impact on your speed than the lottery tickets you already hold. 1067 1068 Now, the LQs do indeed beat the UW languages by 15\%, a fact explored further in \MLB{TODO: xref}. 1069 But so too does operation VIII typically beat operation IV by 38\%. 1070 As does a small size on the Intel typically beat a medium size on the AMD by 66\%. 1071 Framework choice is simply not where you stand to win or lose the most. 1072 1073 \MLB{ TODO: find a home for these original conclusions: 1074 cfa-upp similarity holde for all halves by movement or polarity; 1075 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. } 1076 1077 1078 \MLB{Peter, stop here. Rest of the section is coming.} 1046 1079 1047 1080 \begin{comment} … … 1053 1086 Overall, LQ-tailq does the best at short lengths but loses out above a dozen elements. 1054 1087 \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\%.1061 1088 1062 1089 % \begin{figure}
Note:
See TracChangeset
for help on using the changeset viewer.