# HG changeset patch # User Daichi TOMA # Date 1378962030 -32400 # Node ID 896dc855b8084670d6c54c4f191effb5ba5fbf11 # Parent fabd690fbaf04efecfb976661e1bbb1315403b5b add images diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/delay.png Binary file Slides/images/delay.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/delay_memory.png Binary file Slides/images/delay_memory.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/destructive_tree_modification.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Slides/images/destructive_tree_modification.graffle Thu Sep 12 14:00:30 2013 +0900 @@ -0,0 +1,1390 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.17.0.185490 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {558.99997329711914, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2013-01-21 09:07:04 +0000 + Creator + shoshi + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Bounds + {{172, 96}, {140, 60}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 20 + + ID + 30 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs40 \cf0 \'83\'6d\'81\'5b\'83\'686\'82\'f0A\'82\'c9\ +\'92\'bc\'90\'da\'8f\'91\'82\'ab\'8a\'b7\'82\'a6\'82\'e9} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{291, 26}, {168, 36}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 24 + + ID + 29 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'d2\'8f\'57\'8c\'e3\'82\'cc\'96\'d8\'8d\'5c\'91\'a2} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{19, 26}, {168, 36}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 24 + + ID + 28 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'d2\'8f\'57\'91\'4f\'82\'cc\'96\'d8\'8d\'5c\'91\'a2} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 22 + + ID + 27 + Points + + {424.31982451260461, 198.66757883025107} + {430.91094474891889, 214.48626739740533} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 19 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 19 + + ID + 26 + Points + + {388.72079557676636, 125.49729688229412} + {399.27920442323364, 145.50270311770589} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 17 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 21 + + ID + 25 + Points + + {352.15039205902684, 197.80078411805368} + {361.84960794097316, 217.19921588194632} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 20 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 18 + + ID + 24 + Points + + {327.05017550006653, 198.38710512485034} + {318.94982449993347, 216.61289487514969} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 20 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 20 + + ID + 23 + Points + + {361.84960889177836, 125.8007822164433} + {352.15039110822164, 145.19921778355672} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 17 + + + + Bounds + {{416, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 22 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 A} + VerticalPad + 0 + + + + Bounds + {{348, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 21 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 5} + VerticalPad + 0 + + + + Bounds + {{312, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 20 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 2} + VerticalPad + 0 + + + + Bounds + {{386, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 19 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 3} + VerticalPad + 0 + + + + Bounds + {{280, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 18 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 4} + VerticalPad + 0 + + + + Bounds + {{348, 72}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 17 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 1} + VerticalPad + 0 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 13 + + ID + 16 + Points + + {220, 171} + {279, 171} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 8 + + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 8 + + ID + 14 + Points + + {152.31982451260461, 198.66757883025107} + {158.91094474891889, 214.48626739740533} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 5 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 5 + + ID + 13 + Points + + {116.72079557676633, 125.49729688229412} + {127.27920442323367, 145.50270311770589} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 3 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 7 + + ID + 12 + Points + + {80.150392059026842, 197.80078411805368} + {89.849607940973158, 217.19921588194632} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 6 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 4 + + ID + 11 + Points + + {57.568120403652479, 199.40264380586143} + {55, 207} + {49.122475314092277, 217.7264825517816} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 6 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 6 + + ID + 10 + Points + + {89.84960889177836, 125.8007822164433} + {80.15039110822164, 145.19921778355672} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 3 + + + + Bounds + {{144, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 8 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 6} + VerticalPad + 0 + + + + Bounds + {{76, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 7 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 5} + VerticalPad + 0 + + + + Bounds + {{40, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 6 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 2} + VerticalPad + 0 + + + + Bounds + {{114, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 5 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 3} + VerticalPad + 0 + + + + Bounds + {{8, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 4 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 4} + VerticalPad + 0 + + + + Bounds + {{76, 72}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 1} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2013-09-12 02:57:05 +0000 + Modifier + Daichi TOMA + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {594.99997329711914, 842} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{355, 10}, {1121, 998}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-214, -38}, {986, 859}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + + diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/destructive_tree_modification.png Binary file Slides/images/destructive_tree_modification.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/nondestructive_tree_modification.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Slides/images/nondestructive_tree_modification.graffle Thu Sep 12 14:00:30 2013 +0900 @@ -0,0 +1,1725 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.17.0.185490 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {1117.9999465942383, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2013-01-21 09:07:04 +0000 + Creator + shoshi + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 20 + + ID + 37 + Points + + {454.87248201485625, 114.75922886664337} + {379.38436691656409, 157.22129360943271} + + Style + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 31 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 33 + + ID + 35 + Points + + {532.08905534355313, 200.51373256266163} + {537.91094488592387, 214.48626733824119} + + Style + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 32 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 32 + + ID + 34 + Points + + {496.65431281947866, 127.26606637957934} + {505.34568719668056, 143.73393361156516} + + Style + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 31 + + + + Bounds + {{523, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 33 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 A} + VerticalPad + 0 + + + + Bounds + {{493, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 32 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 3} + VerticalPad + 0 + + + + Bounds + {{455, 72}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 31 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 1} + VerticalPad + 0 + + + + Bounds + {{146, 91}, {207, 60}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 20 + + ID + 44 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + Width + 4 + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs40 \cf0 \'90\'56\'82\'b5\'82\'ad\'96\'d8\'8d\'5c\'91\'a2\'82\'f0\'8d\'ec\'90\'ac\'82\'b5\ +\'83\'6d\'81\'5b\'83\'686\'82\'f0A\'82\'c6\'82\'b5\'82\'c4\'92\'c7\'89\'c1} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{344, 26}, {168, 36}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 24 + + ID + 29 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'d2\'8f\'57\'8c\'e3\'82\'cc\'96\'d8\'8d\'5c\'91\'a2} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{19, 26}, {168, 36}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 24 + + ID + 28 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'d2\'8f\'57\'91\'4f\'82\'cc\'96\'d8\'8d\'5c\'91\'a2} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 22 + + ID + 27 + Points + + {439.31982621698302, 198.66757809424158} + {446.68017830001645, 216.33241995523429} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 19 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 19 + + ID + 26 + Points + + {403.72079581894474, 125.49729674957629} + {414.27920485177293, 145.50270288285921} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 17 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 21 + + ID + 25 + Points + + {367.15039226844124, 197.80078400937748} + {376.8496083048434, 217.19921569311472} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 20 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 18 + + ID + 24 + Points + + {342.05017651791178, 198.38710559393402} + {333.94982620773891, 216.61289566220819} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 20 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 20 + + ID + 23 + Points + + {376.84960927944502, 125.80078241762426} + {367.15039178181615, 145.19921813312089} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 17 + + + + Bounds + {{431, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 0 + + Font + Helvetica + Size + 22 + + ID + 22 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 6} + VerticalPad + 0 + + + + Bounds + {{363, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 21 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 5} + VerticalPad + 0 + + + + Bounds + {{327, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 20 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 2} + VerticalPad + 0 + + + + Bounds + {{401, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 19 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 3} + VerticalPad + 0 + + + + Bounds + {{295, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 18 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 4} + VerticalPad + 0 + + + + Bounds + {{363, 72}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 17 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 1} + VerticalPad + 0 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 13 + + ID + 16 + Points + + {222, 171} + {281, 171} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 8 + + ID + 14 + Points + + {152.31987167027842, 198.66755868712602} + {158.91101925573898, 214.4862352639696} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 5 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 5 + + ID + 13 + Points + + {116.72897842191482, 125.49282215021115} + {127.29368764486551, 145.49479166765997} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 3 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 7 + + ID + 12 + Points + + {80.160662019657806, 197.79546519726136} + {89.867457559197177, 217.18998379409456} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 6 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 4 + + ID + 11 + Points + + {55.058932076293431, 198.3911291228325} + {46.964513898367926, 216.61965322030133} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 6 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 22 + + Head + + ID + 6 + + ID + 10 + Points + + {89.854953377387218, 125.80354814066762} + {80.159676163110646, 145.20402637892221} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.0142860412597656 + Legacy + + TailArrow + 0 + Width + 4 + + + Tail + + ID + 3 + + + + Bounds + {{144, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Color + + b + 0 + g + 0 + r + 1 + + Font + Helvetica + Size + 22 + + ID + 8 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0 + r + 1 + + GapRatio + 0.5 + Width + 8 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf2 6} + VerticalPad + 0 + + + + Bounds + {{76, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 7 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 5} + VerticalPad + 0 + + + + Bounds + {{40, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 6 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 2} + VerticalPad + 0 + + + + Bounds + {{114, 144}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 5 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 3} + VerticalPad + 0 + + + + Bounds + {{8, 216}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 4 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 4} + VerticalPad + 0 + + + + Bounds + {{76, 72}, {54, 55}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 22 + + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Width + 4 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs46 \cf0 1} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2013-09-12 03:03:25 +0000 + Modifier + Daichi TOMA + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {594.99997329711914, 842} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{248, 30}, {1121, 998}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, -38}, {986, 859}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + + diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/nondestructive_tree_modification.png Binary file Slides/images/nondestructive_tree_modification.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/para.png Binary file Slides/images/para.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/read.png Binary file Slides/images/read.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/images/write.png Binary file Slides/images/write.png has changed diff -r fabd690fbaf0 -r 896dc855b808 Slides/jssst.html --- a/Slides/jssst.html Thu Sep 12 02:11:52 2013 +0900 +++ b/Slides/jssst.html Thu Sep 12 14:00:30 2013 +0900 @@ -64,6 +64,20 @@

+ Haskell +

+

+ Haskell は、純粋関数型プログラミング言語である。 + 変数への代入は一度のみで、書き換えることはできない。 +

+

+ 非破壊的木構造は変数への代入が発生しないことから、関数型言語と相性が良いと考えられる。 + そのため、Haskell を用いて再実装を行った。 +

+
+ +
+

非破壊的木構造データベース Jungle

@@ -91,7 +105,11 @@

ロックを行わなければ、参照中に他の編集者が編集してしまうと、整合性がなくなってしまう。

- 図を入れる。見やすいように線とか太くする。 +

+

+ +
+

@@ -105,7 +123,11 @@

参照中に他の編集者が編集してしまっても、整合性がなくなることはない。

- 図を入れる。見やすいように線とか太くする。 +

+

+ +
+

@@ -127,22 +149,81 @@

- Haskell + 非破壊的木構造データベース Jungle

- Haskell は、純粋関数型プログラミング言語である。 - 変数への代入は一度のみで、書き換えることはできない。 + Jungle は複数の木を保持することができる。 + 木には名前がついており、名前を利用して判別を行う。 + 作成・編集・削除を行うことができる。 +

+
+jungle = createJungle
+new_jung = createTree jungle "new_tree"
+
+

+ createTree 関数を利用して木構造を作成する。 +

+
+ +
+

+ 非破壊的木構造データベース Jungle +

+

+ 木構造とルートノードを取得するためには以下のように記述する。 +

+
+tree = getTreeByName new_jung "new_tree"
+node = getRootNode tree
+
+

+ getTreeByName 関数で名前を指定することで木構造を取得できる。 + getRootNode 関数でルートノードを取得できる。 +

+
+ +
+

+ 非破壊的木構造データベース Jungle +

+

+ addNewChildAt 関数で、ノードに新しい子を追加することができる。 + また、putAttribute 関数で、ノードが持つ連想リストを編集できる。

- 非破壊的木構造は変数への代入が発生しないことから、関数型言語と相性が良いと考えられる。 - そのため、Haskell を用いて再実装を行った。 + どのノードを編集するかという情報は、ルートノードからのパスを渡すことで解決する。 + 木を編集したあと、updateTree 関数を用いて既存の Jungle に変更を加え新しい Jungle を作成する。 +

+
+new_tree = addNewChildAt tree [0,1] 0
+new_tree2 = putAttribute new_tree
+                 [0,1,0] "key" "value"
+new_jungle = updateTree jungle new_tree2
+
+
+ +
+

+ 非破壊的木構造データベース Jungle +

+

+ 非破壊的木構造であっても、どのノードが最新のルートノードなのかという情報が必要である。 + スレッドセーフに取り扱う必要があるため、Haskell のソフトウェア・トランザクショナル・メモリを用いて管理している。

- + +
+

+ 開発期間の短縮 +

+

+ Java 版の Jungle の実装と比較すると、コード行数は約 3000 行から約 150 行へ短くなった。 + また開発期間は Java 版の実装で、3 ヶ月程度かかったが、 Haskell 版の実装は 2 週間程度であった。 +

+

+ これにより、関数型プログラミングではコードは短くなり、生産性が向上することが分かった。 +

+

@@ -152,10 +233,8 @@ 非破壊的木構造データベース Jungle を用いて簡易掲示板システムを作成し、既存の Java 版との性能比較を行った。

- Haskell 版 Jungle の HTTP サーバには、Haskell によって書かれた Warp を用いた。 -

-

- Java 版 Jungle の HTTP サーバには、Jetty を用いた。 + Haskell 版 Jungle の HTTP サーバには、Warp を用いた。 + Warpは、Haskell で書かれた軽量・高速な HTTP サーバである。

@@ -173,34 +252,77 @@

実験環境 -

- xeon使ったよーとか + +

+ 負荷をかける対象であるサーバは、マルチコア環境が生かされているか確認するためにコア数の多いマシンを用いる +

+

+ 性能評価に使用するサーバ +

+ + + + + +
+ OS + + Fedora 16 +
+ CPU + + Intel Xeon X5650 2.67GHz * 2 +
+ 論理コア数 + + 24 +
+ 物理メモリ + + 132 GB +

実験結果

- ほぼ同じぐらい +
+ +
+
+ +
+
+ +

+ 左が読み込み、右が書き込みの実験結果である。 +

+ +

+ Haskell 版および Java 版の Jungle は、ほぼ同程度の速度が出ていることが分かる。 +

並列実行

-
    -
  • Haskell 版 Jungle では、並列実行に問題を抱えている -
  • 複数のスレッドが立ち上がり、並列実行していることは確認したが、シングルコアで実行した場合と比較して実行結果が遅くなる -
+

+ Haskell 版 Jungle では、並列実行に問題を抱えている。 + 複数のスレッドが立ち上がり、並列実行していることは確認したが、シングルコアで実行した場合と比較して実行結果が遅くなる。 +

並列実行

- -
    -
  • 本研究とは別に、簡単な例題を並列で動かした場合でも期待する実行速度の向上は得られなかった。並列処理で速度向上を達成することは今後の課題である + +

    + 本研究とは別に、簡単な例題を並列で動かした場合でも期待する実行速度の向上は得られなかった。 + 並列処理で速度向上を達成することは今後の課題である。 +

@@ -208,35 +330,50 @@

遅延評価

- - +

+ Haskell は遅延評価を行うが、書き込みの際に問題が生じる。 + 何かしらの結果を表示するまで、簡約可能な式の状態で積まれたままとなる。 + その際メモリを消費し、効率のよい領域に入りきらないサイズになると実行結果が遅くなる。 +

-
+

遅延評価

- +

+ 評価を行ったあとに実行時間がどのように変わるかを示すために、実験方法を変更した。 + 以下に示す。 +

    -
  • 評価を行ったあとに実行時間がどのように変わるかを示すために、実験方法を変更した。クラスタ台数を変更する際に10台増やすごとに一度読み込みを挟むようにした。書き込みを繰り返すと実行時間が悪化し、読み込み後、急激に実行時間が下がる。 -
  • 読み込みの際には、数万回以上の書き込みを処理するため数秒から数十秒かかる -
  • 書き込みは、インクリメントしている値を書き込んでいるが順序などは正しく処理できている -
  • この問題を解決するために、全て遅延評価するのではなく、適切な箇所で即時評価を行うことで領域効率を改善する必要がある +
  • クラスタ台数を10台増やすごとに一度読み込みを挟む +
  • 推奨されるヒープ領域のサイズを変更しない
+
+

+ 遅延評価 +

+ +

+ 書き込みを繰り返すと実行時間が悪化し、読み込み後、実行時間が下がる。 + 読み込みの際には、数万回以上の書き込みを処理するため数秒から数十秒かかる。 + 書き込みの順序は正しく処理されている。 +

+

+ この問題を解決するために、全て遅延評価するのではなく、適切な箇所で即時評価を行うことで領域効率を改善する必要がある +

+
+

まとめ

    -
  • Haskell による非破壊的木構造を用いた CMS の実装を行った。 +
  • Haskell による非破壊的木構造データベース Jungle を実装した
  • 木構造データベース Jungle と、HTTP サーバ Warp を用いて、簡易掲示板システムを開発し、既存の Java の実装と同程度の性能を達成できた -
  • Java の実装と比較して開発期間およびコード行数は非常に短くなった。 +
  • Haskell 版 Jungle は、Java の実装と比較して開発期間およびコード行数は短くなった。