Index: doc/theses/mike_brooks_MMath/plots/string-allocn-attrib-sepcmp.py
===================================================================
--- doc/theses/mike_brooks_MMath/plots/string-allocn-attrib-sepcmp.py	(revision 810c2c596a73f36f250f13be31cf07734799f98a)
+++ doc/theses/mike_brooks_MMath/plots/string-allocn-attrib-sepcmp.py	(revision 810c2c596a73f36f250f13be31cf07734799f98a)
@@ -0,0 +1,44 @@
+import pandas as pd
+import numpy as np
+import os
+import sys
+from pathlib import Path
+
+sys.path.insert(0, os.path.dirname(__file__))
+from common import *
+
+infile_attrib = os.path.dirname(os.path.abspath(__file__)) + '/../build/plot-string-allocn-attrib.dat'
+attribs = pd.read_csv(infile_attrib, 
+                        sep='\t',
+                        header=0)
+
+infile_sepcmp = os.path.dirname(os.path.abspath(__file__)) + '/../benchmarks/string/string-separate-compilation-overhead.csv'
+sepcmps = pd.read_csv(infile_sepcmp, 
+                        header=0)
+
+# putting the sepcmp bar at the top of 'other', so just below ctor-dtor
+category_above_semcmp = 'ctor-dtor'
+
+# print(attribs)
+# print(sepcmps)
+
+# print(attribs.columns)
+
+isfirst = True
+
+for _,scr in sepcmps.iterrows():
+    size = scr['size']
+#    tuning = r['tuning']
+    attrib_key = attribs[ (attribs['corpus-meanlen-tgt'] == size) &
+                            (attribs['sut-platform'] == 'cfa') &
+                           ( attribs['category'] == category_above_semcmp )]
+    attrib_key = attrib_key.copy()
+#    print(attrib_key)
+    assert( len(attrib_key) == 1 )
+#    attrib_key = attrib_key.iloc[0] # convert from singleton table to row
+    attrib_key['sepcmp-Delta'] = scr['mean DeltaOpDur']
+    attrib_key['sepcmp-adjusted'] = attrib_key['grp-prior-duration-ns'] - attrib_key['sepcmp-Delta']
+
+    print(attrib_key.to_csv(header=isfirst, index=False, sep='\t', na_rep="0"), end='')
+    isfirst = False
+
Index: doc/theses/mike_brooks_MMath/plots/string-allocn.d
===================================================================
--- doc/theses/mike_brooks_MMath/plots/string-allocn.d	(revision 79f1285aa1d04ff9f1897f55f3205b23ce00836a)
+++ doc/theses/mike_brooks_MMath/plots/string-allocn.d	(revision 810c2c596a73f36f250f13be31cf07734799f98a)
@@ -1,4 +1,5 @@
 plots/string-allocn.gp.INPUTS: build/plot-string-allocn.dat
 plots/string-allocn.gp.INPUTS: build/plot-string-allocn-attrib.dat
+plots/string-allocn.gp.INPUTS: build/plot-string-allocn-attrib-sepcmp.dat
 plots/string-allocn.py.INPUTS: benchmarks/string/result-allocate-space-cfa.ssv
 plots/string-allocn.py.INPUTS: benchmarks/string/result-allocate-space-stl.ssv
@@ -7,2 +8,4 @@
 plots/string-allocn-attrib.py.INPUTS: benchmarks/string/result-allocate-attrib-stl.ssv
 plots/string-allocn-attrib.py.INPUTS: benchmarks/string/result-allocate-attrib-cfa.ssv
+plots/string-allocn-attrib-sepcmp.py.INPUTS: benchmarks/string/string-separate-compilation-overhead.csv
+plots/string-allocn-attrib-sepcmp.py.INPUTS: build/plot-string-allocn-attrib.dat
Index: doc/theses/mike_brooks_MMath/plots/string-allocn.gp
===================================================================
--- doc/theses/mike_brooks_MMath/plots/string-allocn.gp	(revision 79f1285aa1d04ff9f1897f55f3205b23ce00836a)
+++ doc/theses/mike_brooks_MMath/plots/string-allocn.gp	(revision 810c2c596a73f36f250f13be31cf07734799f98a)
@@ -112,5 +112,16 @@
 }
 
+# bonus legend of black box = sepcomp overhead
+set object rect from graph 0.05, graph 0.92 to graph 0.11, graph 0.935 fc rgb "black"
+set label "sep. comp.\noverhead" at graph 0.14, graph 0.935 left font "Times,15"
 
+pattern(i) = \
+    (i==1 ? 1 : \
+     i==2 ? 4 : \
+     i==3 ? 2 : \
+     i==4 ? 6 : \
+     i==5 ? 3 : \
+     i==6 ? 5 : \
+              1)
 
 plot \
@@ -120,5 +131,12 @@
 			  (stringcolumn("category") eq STATS_word[i] ? ($5 + $8) : 1/0): \
 			  (stringcolumn("category") eq STATS_word[i] ? (BAR_RELWD*(BAR_XSHIFT*$1**LEN_X_SEP*$3/SCALE)) : 1/0) \
-		with boxes ls i title STATS_word[i], \
+		with boxes ls i fs pattern pattern(i) title STATS_word[i], \
+	INDIR.'/plot-string-allocn-attrib-sepcmp.dat' \
+	    using (BAR_XSHIFT*$1**LEN_X_SEP*$3/SCALE*0.75): \
+			(($8+$10)/2): \
+			(BAR_RELWD*(BAR_XSHIFT*$1**LEN_X_SEP*$3/SCALE)/4): \
+			($9/2) \
+		notitle \
+		with boxxyerrorbars lt rgb "black", \
 	INDIR."/plot-string-allocn.dat" \
 	   i 1 using (50 **LEN_X_SEP*$5/SCALE):2     notitle with lines      lt rgb "red"         dt '.'  lw 2, \
