From bb83ad47a45ab3d92a8f5bf87481f5ce3fccc876 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Thu, 27 Dec 2018 19:35:29 -0500 Subject: [PATCH] Figures. --- scripts/data/nuc/bar.gnuplot | 36 +++++++++++++++++++++++++ scripts/data/nuc/gbps.pdf | Bin 0 -> 28399 bytes scripts/data/nuc/pasteandrotate.py | 18 +++++++++++++ scripts/data/skylake/bar.gnuplot | 36 +++++++++++++++++++++++++ scripts/data/skylake/gbps.pdf | Bin 0 -> 28395 bytes scripts/data/skylake/pasteandrotate.py | 18 +++++++++++++ 6 files changed, 108 insertions(+) create mode 100644 scripts/data/nuc/bar.gnuplot create mode 100644 scripts/data/nuc/gbps.pdf create mode 100644 scripts/data/nuc/pasteandrotate.py create mode 100644 scripts/data/skylake/bar.gnuplot create mode 100644 scripts/data/skylake/gbps.pdf create mode 100644 scripts/data/skylake/pasteandrotate.py diff --git a/scripts/data/nuc/bar.gnuplot b/scripts/data/nuc/bar.gnuplot new file mode 100644 index 000000000..25c027bf4 --- /dev/null +++ b/scripts/data/nuc/bar.gnuplot @@ -0,0 +1,36 @@ +set term pdfcairo fontscale 0.65 noenhanced +! python pasteandrotate.py > gbps.txt +set output "gbps.pdf" +set boxwidth 0.8 +set style fill solid +set ylabel "parsing speed (GB/s)" + + +#set style line 80 lt rgb "#000000" + +# Line style for grid +set style line 81 lt 0 # dashed +set style line 81 lt rgb "#808080" # grey + +set grid back linestyle 81 +set border 3 back linestyle 80 # Remove border on top and right. These + # borders are useless and make it harder + # to see plotted lines near the border. + # Also, put it in grey; no need for so much emphasis on a border. +set xtics nomirror +set ytics nomirror + +set yrange [0:] +set format y "%0.1f"; +set style data histogram +set style histogram cluster gap 1 + +#set style line 1 lt rgb "#A0A0A0" lw 1 pt 1 ps 1 +#set key autotitle columnhead + +color1 = "#ff0c18";color2 = "#000000"; color3 = "#0c24ff"; +set xtic rotate by 300 scale 1 + +plot "gbps.txt" using 2:xtic(1) title "simdjson" linecolor rgb color1, \ +"" using 3 title "RapidJSON" linecolor rgb color2, \ +"" using 4 title "sajson" linecolor rgb color3 diff --git a/scripts/data/nuc/gbps.pdf b/scripts/data/nuc/gbps.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f59f1d9641cc1a6c8ea1be78f6e5182fe6cfa0d GIT binary patch literal 28399 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 gbps.txt +set output "gbps.pdf" +set boxwidth 0.8 +set style fill solid +set ylabel "parsing speed (GB/s)" + + +#set style line 80 lt rgb "#000000" + +# Line style for grid +set style line 81 lt 0 # dashed +set style line 81 lt rgb "#808080" # grey + +set grid back linestyle 81 +set border 3 back linestyle 80 # Remove border on top and right. These + # borders are useless and make it harder + # to see plotted lines near the border. + # Also, put it in grey; no need for so much emphasis on a border. +set xtics nomirror +set ytics nomirror + +set yrange [0:] +set format y "%0.1f"; +set style data histogram +set style histogram cluster gap 1 + +#set style line 1 lt rgb "#A0A0A0" lw 1 pt 1 ps 1 +#set key autotitle columnhead + +color1 = "#ff0c18";color2 = "#000000"; color3 = "#0c24ff"; +set xtic rotate by 300 scale 1 + +plot "gbps.txt" using 2:xtic(1) title "simdjson" linecolor rgb color1, \ +"" using 3 title "RapidJSON" linecolor rgb color2, \ +"" using 4 title "sajson" linecolor rgb color3 diff --git a/scripts/data/skylake/gbps.pdf b/scripts/data/skylake/gbps.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1d658b1fe5221e0d00b7e88672dd58d3e4917153 GIT binary patch literal 28395 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