changeset 53:4675d3e5fee3

add write benchmark
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Mon, 10 Feb 2014 08:18:16 +0900
parents 9a75333cc202
children 130082e3f790
files paper/benchmark/write7.8/linear.dat paper/benchmark/write7.8/result.txt paper/benchmark/write7.8/result2.txt paper/benchmark/write7.8/result_with_qa.txt paper/benchmark/write7.8/write.dat paper/benchmark/write7.8/write.eps paper/benchmark/write7.8/write.plt paper/benchmark/write7.8/write_with_qa.dat paper/chapter4.tex paper/images/write.pdf paper/images/write.xbb paper/master_paper.pdf
diffstat 12 files changed, 864 insertions(+), 92 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/linear.dat	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,24 @@
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 9
+10 10
+11 11
+12 12
+13 13
+14 14
+15 15
+16 16
+17 17
+18 18
+19 19
+20 20
+21 21
+22 22
+23 23
+24 24
--- a/paper/benchmark/write7.8/result.txt	Mon Feb 10 06:25:52 2014 +0900
+++ b/paper/benchmark/write7.8/result.txt	Mon Feb 10 08:18:16 2014 +0900
@@ -1,24 +1,50 @@
 N=1
-time: 49.75s
+time: 49.70s
 N=2
-time: 30.80s
+time: 27.77s
 N=3
-time: 21.62s
+time: 21.10s
 N=4
-time: 17.87s
+time: 18.06s
 N=5
-time: 15.42s
+time: 16.21s
 N=6
-time: 14.48s
+time: 15.43s
 N=7
-time: 13.24s
+time: 16.57s
 N=8
-time: 12.86s
+time: 16.66s
 N=9
-time: 13.29s
+time: 16.57s
 N=10
-time: 13.26s
+time: 16.48s
 N=11
-time: 12.98s
+time: 16.58s
 N=12
-time: 14.98s
+time: 15.62s
+N=13
+time: 15.94s
+N=14
+time: 15.47s
+N=15
+time: 15.01s
+N=16
+time: 14.91s
+N=17
+time: 15.62s
+N=18
+time: 15.41s
+N=19
+time: 14.58s
+N=20
+time: 15.31s
+N=21
+time: 15.86s
+N=22
+time: 15.60s
+N=23
+time: 16.35s
+N=24
+time: 18.11s
+
+./ParWrite2 +RTS -K1G -N1
--- a/paper/benchmark/write7.8/result2.txt	Mon Feb 10 06:25:52 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-N=1
-time: 49.61s
-N=2
-time: 30.76s
-N=3
-time: 22.40s
-N=4
-time: 18.05s
-N=5
-time: 15.63s
-N=6
-time: 13.84s
-N=7
-time: 13.00s
-N=8
-time: 12.50s
-N=9
-time: 13.29s
-N=10
-time: 14.04s
-N=11
-time: 13.01s
-N=12
-time: 12.96s
-N=13
-time: 13.02s
-N=14
-time: 12.57s
-N=15
-time: 13.14s
-N=16
-time: 13.11s
-N=17
-time: 12.66s
-N=18
-time: 13.97s
-N=19
-time: 13.97s
-N=20
-time: 13.84s
-N=21
-time: 14.14s
-N=22
-time: 14.11s
-N=23
-time: 14.79s
-N=24
-time: 71.66s
-
-./write.sh  4297.14s user 1215.35s system 1208% cpu 7:36.05 total
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/result_with_qa.txt	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,50 @@
+N=1
+time: 49.61s
+N=2
+time: 30.76s
+N=3
+time: 22.40s
+N=4
+time: 18.05s
+N=5
+time: 15.63s
+N=6
+time: 13.84s
+N=7
+time: 13.00s
+N=8
+time: 12.50s
+N=9
+time: 13.29s
+N=10
+time: 14.04s
+N=11
+time: 13.01s
+N=12
+time: 12.96s
+N=13
+time: 13.02s
+N=14
+time: 12.57s
+N=15
+time: 13.14s
+N=16
+time: 13.11s
+N=17
+time: 12.66s
+N=18
+time: 13.97s
+N=19
+time: 13.97s
+N=20
+time: 13.84s
+N=21
+time: 14.14s
+N=22
+time: 14.11s
+N=23
+time: 14.79s
+N=24
+time: 71.66s
+
+./write.sh  4297.14s user 1215.35s system 1208% cpu 7:36.05 total
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/write.dat	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,24 @@
+1 1
+2 1.79
+3 2.36
+4 2.75
+5 3.06
+6 3.22
+7 2.99
+8 2.98
+9 2.99
+10 3.02
+11 2.99
+12 3.18
+13 3.12
+14 3.21
+15 3.31
+16 3.33
+17 3.18
+18 3.23
+19 3.41
+20 3.24
+21 3.13
+22 3.18
+23 3.03
+24 2.74
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/write.eps	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,674 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: write.eps
+%%Creator: gnuplot 4.6 patchlevel 3
+%%CreationDate: Mon Feb 10 08:03:17 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 410 302
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+	dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc
+	2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 450 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+	2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 360 arc closepath fill
+	vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+	neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+	exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+	Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+	Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%	x,y = lower left corner of box to be filled
+%	w,h = width and height of box
+%	  a = angle in degrees between lines and x-axis
+%	 XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+	0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+	{/InterpretLevel1 true def}
+	{/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+	bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+	0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+	8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+	0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+	0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+	0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+	0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+	12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+	-4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (write.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 3)
+  /Author (amothic)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Feb 10 08:03:17 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 7200.00 5040.00 BoxColFill} if
+1.000 UL
+LTb
+602 448 M
+63 0 V
+6282 0 R
+-63 0 V
+518 448 M
+( 0) Rshow
+1.000 UL
+LTb
+602 1333 M
+63 0 V
+6282 0 R
+-63 0 V
+-6366 0 R
+( 5) Rshow
+1.000 UL
+LTb
+602 2217 M
+63 0 V
+6282 0 R
+-63 0 V
+-6366 0 R
+( 10) Rshow
+1.000 UL
+LTb
+602 3102 M
+63 0 V
+6282 0 R
+-63 0 V
+-6366 0 R
+( 15) Rshow
+1.000 UL
+LTb
+602 3986 M
+63 0 V
+6282 0 R
+-63 0 V
+-6366 0 R
+( 20) Rshow
+1.000 UL
+LTb
+602 4871 M
+63 0 V
+6282 0 R
+-63 0 V
+-6366 0 R
+( 25) Rshow
+1.000 UL
+LTb
+1705 448 M
+0 63 V
+0 4360 R
+0 -63 V
+0 -4500 R
+( 5) Cshow
+1.000 UL
+LTb
+3085 448 M
+0 63 V
+0 4360 R
+0 -63 V
+0 -4500 R
+( 10) Cshow
+1.000 UL
+LTb
+4464 448 M
+0 63 V
+0 4360 R
+0 -63 V
+0 -4500 R
+( 15) Cshow
+1.000 UL
+LTb
+5844 448 M
+0 63 V
+0 4360 R
+0 -63 V
+0 -4500 R
+( 20) Cshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+602 4871 N
+602 448 L
+6345 0 V
+0 4423 V
+-6345 0 V
+Z stroke
+LCb setrgbcolor
+112 2659 M
+currentpoint gsave translate -270 rotate 0 0 M
+(speedup) Cshow
+grestore
+LTb
+LCb setrgbcolor
+3774 98 M
+(number of cpus) Cshow
+LTb
+1.000 UP
+1.000 UL
+LTb
+% Begin plot #1
+2.000 UL
+LT0
+1.00 0.00 0.00 C LCb setrgbcolor
+6296 4738 M
+(write) Rshow
+LT0
+1.00 0.00 0.00 C 6380 4738 M
+399 0 V
+602 625 M
+878 765 L
+276 101 V
+276 69 V
+275 54 V
+276 29 V
+276 -41 V
+276 -2 V
+276 2 V
+276 5 V
+276 -5 V
+276 34 V
+275 -11 V
+276 16 V
+276 18 V
+276 3 V
+276 -26 V
+276 8 V
+276 32 V
+276 -30 V
+275 -19 V
+276 9 V
+276 -27 V
+276 -51 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+0.00 0.00 0.50 C LCb setrgbcolor
+6296 4598 M
+(write with affinity) Rshow
+LT1
+0.00 0.00 0.50 C 6380 4598 M
+399 0 V
+602 625 M
+878 733 L
+276 106 V
+276 96 V
+275 74 V
+276 72 V
+276 41 V
+276 27 V
+276 -41 V
+276 -35 V
+276 49 V
+276 2 V
+275 -2 V
+276 25 V
+276 -30 V
+276 0 V
+276 23 V
+276 -64 V
+276 0 V
+276 5 V
+275 -14 V
+276 2 V
+276 -28 V
+6947 570 L
+% End plot #2
+% Begin plot #3
+stroke
+LT2
+0.75 0.50 1.00 C LCb setrgbcolor
+6296 4458 M
+(linear) Rshow
+LT2
+0.75 0.50 1.00 C 6380 4458 M
+399 0 V
+602 625 M
+878 802 L
+276 177 V
+276 177 V
+275 177 V
+276 177 V
+276 176 V
+276 177 V
+276 177 V
+276 177 V
+276 177 V
+276 177 V
+275 177 V
+276 177 V
+276 177 V
+276 177 V
+276 177 V
+276 177 V
+276 176 V
+276 177 V
+275 177 V
+276 177 V
+276 177 V
+276 177 V
+% End plot #3
+stroke
+1.000 UL
+LTb
+602 4871 N
+602 448 L
+6345 0 V
+0 4423 V
+-6345 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/write.plt	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,8 @@
+set terminal postscript eps
+set output "write.eps"
+
+set xrange [1:24]
+set xlabel "number of cpus"
+set ylabel "speedup"
+
+plot "write.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "red" title "write", "write_with_qa.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "navy" title "write with affinity", "linear.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "purple" title "linear"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/benchmark/write7.8/write_with_qa.dat	Mon Feb 10 08:18:16 2014 +0900
@@ -0,0 +1,24 @@
+1 1
+2 1.61
+3 2.21
+4 2.75
+5 3.17
+6 3.58
+7 3.81
+8 3.96
+9 3.73
+10 3.53
+11 3.81
+12 3.82
+13 3.81
+14 3.95
+15 3.78
+16 3.78
+17 3.91
+18 3.55
+19 3.55
+20 3.58
+21 3.50
+22 3.51
+23 3.35
+24 0.69
--- a/paper/chapter4.tex	Mon Feb 10 06:25:52 2014 +0900
+++ b/paper/chapter4.tex	Mon Feb 10 08:18:16 2014 +0900
@@ -34,6 +34,7 @@
 Haskell のコンパイラには The Glasgow Haskell Compiler(GHC)を使用する. 
 GHC は, Haskell で最も広く使われているコンパイラである\cite{ghc}. 
 ソフトウェア・トランザクショナル・メモリをサポートするなど, 並列プログラミングのためのHaskellの拡張が行われている. 
+GHC は, 並列実行時のIOマネージャーが改良されているため, Release candidate versionである7.8を用いる\cite{iomanager}.
 
 Haskell および Java のバージョンを表\ref{tab:compiler}に示す. 
 
@@ -83,7 +84,7 @@
 \begin{table}[!htbp]
 \begin{center}
 \begin{tabular}{|c||r|r|} \hline
-  CPU数 & 通常実行 & qaオプションあり\\ \hline
+  CPU数 & 通常実行 & 親和性機能利用\\ \hline
   1 & 60.95 s & 61.00 s \\\hline
   2 & 30.83 s & 33.95 s \\\hline
   4 & 15.49 s & 16.10 s \\\hline
@@ -113,7 +114,6 @@
   \label{fig:benchmark_read}
 \end{figure}
 
-\clearpage
 \section{書き込みの性能計測}
 非破壊的木構造データベース Jungle を用いて, マルチコアプロセッサ上で並列に書き込みを行い, 線形に性能向上ができるか調査する. 
 
@@ -127,24 +127,22 @@
 非破壊的木構造データベース Jungle の書き込みの計測結果を表\ref{tab:par_write}に示す. 
 
 CPUコア数を増やしていくと, 実行時間が短くなっていることが分かる. 
-シングルスレッドで実行した場合と比較して, 2 スレッドで 1.55 倍, 12 スレッドで 3.86 倍の性能向上が見られる. 
-読み込みと比べ, 書き込みはJungleへの登録作業があるため並列化率が下がり, 性能向上率が低いことが分かる. 
-
-ハイパースレッディングは効果がなく, 13 スレッド以上では実行時間が遅くなっている. 
-
+シングルスレッドで実行した場合と比較して, 2 スレッドで 1.79 倍, 12 スレッドで 3.18 倍の性能向上が見られる. 
+OSの親和性機能を使った場合, 2 スレッドで 1.61 倍, 12 スレッドで 3.82 倍の性能向上が見られ, 4 スレッド以上では親和性機能を使ったほうが実行時間が短くなる.
+書き込みは, 読み込みと比べるとJungleへの木構造の登録作業があるため並列化率が下がり, 12スレッド時に3.82倍程度の性能向上率となる.
 
 \begin{table}[!htbp]
 \begin{center}
-\begin{tabular}{|c||r|} \hline
-CPU数 & 実行時間 \\ \hline
-1 & 52.68 s\\ \hline
-2 & 33.92 s\\ \hline
-4 & 20.11 s\\ \hline
-8 & 15.31 s\\ \hline
-12 & 13.62 s\\ \hline
-16 & 14.92 s\\ \hline
-20 & 18.62 s\\ \hline
-24 & 16.63 s\\ \hline
+\begin{tabular}{|c||r|r|} \hline
+  CPU数 & 通常実行 & 親和性機能利用\\ \hline
+  1 & 49.70 s & 49.61 s \\\hline
+  2 & 27.77 s & 30.76 s \\\hline
+  4 & 18.06 s & 18.05 s \\\hline
+  8 & 16.66 s & 12.50 s \\\hline
+  12 & 15.62 s & 12.96 s \\\hline
+  16 & 14.91 s & 13.11 s \\\hline
+  20 & 15.31 s & 13.84 s \\\hline
+  24 & 18.11 s & 71.66 s \\\hline
 \end{tabular}
 \end{center}
 \caption{書き込みの計測結果}
@@ -152,27 +150,21 @@
 \end{table}
 
 性能向上率のグラフを図\ref{fig:benchmark_write}に示す. 
-書き込みは性能向上率が低いことが分かる. 
+Jungle へ木の登録する際に他のスレッドから登録があった場合, ソフトウェア・トランザクショナル・メモリが処理をやり直すため, 並列度が下がっていると考えられる.
+速度向上が親和性機能を使った8スレッド実行時の 3.96 倍で頭打ちになっている.
 
-\newpage
+非破壊的木構造データベース Jungle は, 書き込みは並列化率が低くなってしまう.
+読み込みが高速なため, 書き込みより読み込みが多用されるシステムに向いているといえる. 
+
 \begin{figure}[!htbp]
  \begin{center}
-  \includegraphics[width=90mm]{./images/write.pdf}
+  \includegraphics[width=110mm]{./images/write.pdf}
  \end{center}
  \caption{書き込みの性能向上率}
  \label{fig:benchmark_write}
 \end{figure}
 
-Jungle へ木の登録する際に他のスレッドから登録があった場合, ソフトウェア・トランザクショナル・メモリが処理をやり直すため, 並列度が下がっていると思われる. 
-また, GHC の問題も考えられる. 
-GHC の IO マネージャーは, マルチスレッドでうまくスケールしないという問題があり, 並列度が下がってしまう. 
-GHCの次期バージョンではIO マネージャーが改善され, スケールするようになる見込みである\cite{iomanager}. 
-
-非破壊的木構造データベース Jungle は, 書き込みは並列化率が低くなってしまっている. 
-読み込みが高速なため, 書き込みより読み込みが多用されるシステムに向いているといえる. 
-
 \clearpage
-
 \section{Web サービスに組み込んでの性能評価}
 並列データベース Jungle が実用的なWeb サービスを提供できるのか調査する. 
 Web掲示板サービスに組み込んで, 性能測定を行った. 
Binary file paper/images/write.pdf has changed
--- a/paper/images/write.xbb	Mon Feb 10 06:25:52 2014 +0900
+++ b/paper/images/write.xbb	Mon Feb 10 08:18:16 2014 +0900
@@ -4,5 +4,5 @@
 %%HiResBoundingBox: 0.000000 0.000000 360.000000 252.000000
 %%PDFVersion: 1.4
 %%Pages: 1
-%%CreationDate: Thu Jan 30 04:56:55 2014
+%%CreationDate: Mon Feb 10 08:04:30 2014
 
Binary file paper/master_paper.pdf has changed