# HG changeset patch # User Shinji KONO # Date 1378965421 -32400 # Node ID cbb44aa8867b73ce5c88b48ea313841cd0053123 # Parent 896dc855b8084670d6c54c4f191effb5ba5fbf11 add comment diff -r 896dc855b808 -r cbb44aa8867b Slides/jssst.html --- a/Slides/jssst.html Thu Sep 12 14:00:30 2013 +0900 +++ b/Slides/jssst.html Thu Sep 12 14:57:01 2013 +0900 @@ -46,11 +46,92 @@
Sep 13, 2013

+ + + +

はじめに +

本研究室では非破壊的木構造データベース Jungle の開発を行っている。 @@ -67,6 +148,7 @@ Haskell

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

@@ -98,6 +180,7 @@

破壊的木構造

+

ロックを必要とせず、自由にコピーを行えるため、スケーラブルなシステムに有用である。 +

@@ -152,6 +237,9 @@ 非破壊的木構造データベース Jungle

+ Jungle は複数の木を保持することができる。 木には名前がついており、名前を利用して判別を行う。 作成・編集・削除を行うことができる。 @@ -179,6 +267,7 @@

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

@@ -191,6 +280,7 @@ また、putAttribute 関数で、ノードが持つ連想リストを編集できる。

+ どのノードを編集するかという情報は、ルートノードからのパスを渡すことで解決する。 木を編集したあと、updateTree 関数を用いて既存の Jungle に変更を加え新しい Jungle を作成する。

@@ -209,10 +299,13 @@

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

+o

開発期間の短縮

@@ -222,6 +315,7 @@

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

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

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

@@ -296,6 +390,8 @@

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

@@ -321,6 +417,10 @@

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

@@ -329,9 +429,20 @@

遅延評価 +

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

@@ -343,6 +454,7 @@

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