Mercurial > hg > Papers > 2017 > tatsuki-master
comparison benchMark.tex @ 18:d5306971efbf
eng abst
author | tatsuki |
---|---|
date | Fri, 10 Feb 2017 10:24:52 +0900 |
parents | 4d66607c369c |
children | 4365c210d1cb |
comparison
equal
deleted
inserted
replaced
17:4d66607c369c | 18:d5306971efbf |
---|---|
26 | 26 |
27 \newpage | 27 \newpage |
28 | 28 |
29 \section{TreeMapの測定} | 29 \section{TreeMapの測定} |
30 5章で実装した TreeMap の性能測定を行う。 | 30 5章で実装した TreeMap の性能測定を行う。 |
31 比較対象には、 TreeMap 実装前に Jungle 使用していた Functional Java の TreeMap を使用する。 | 31 比較対象には、 TreeMap 実装前に Jungle で使用していた Functional Java の TreeMap を使用する。 |
32 | 32 |
33 図\ref{find}は、 TreeMap に対する値の Get のベンチマークである。 | 33 図\ref{find}は、 TreeMap に1000回の Get を行った際のベンチマークである。 |
34 TreeMap に対して1000回行う際の時間を測定した。 | |
35 X 軸は Get を行う TreeMap のノード数。 | 34 X 軸は Get を行う TreeMap のノード数。 |
36 Y 軸は かかった時間を表す | 35 Y 軸は Get にかかった時間を表す |
37 | 36 |
38 \begin{figure}[htpb] | 37 \begin{figure}[htpb] |
39 \begin{center} | 38 \begin{center} |
40 \includegraphics[scale=0.6,angle=-90]{result/treemap/find.pdf} | 39 \includegraphics[scale=0.6,angle=-90]{result/treemap/find.pdf} |
41 \caption{TreeMap への Get} | 40 \caption{TreeMap への Get} |
43 \label{find} | 42 \label{find} |
44 \end{figure} | 43 \end{figure} |
45 | 44 |
46 \ref{find}より、Functional Java の TreeMap と比較して、 Jungle の TreeMap の方が非常に高速に動いている。 | 45 \ref{find}より、Functional Java の TreeMap と比較して、 Jungle の TreeMap の方が非常に高速に動いている。 |
47 理由として、Jungle の TreeMap は、検索対象の値を持つノードを、二分探索木の探索アルゴリズムに則り探索するのに対し、 | 46 理由として、Jungle の TreeMap は、検索対象の値を持つノードを、二分探索木の探索アルゴリズムに則り探索するのに対し、 |
48 Functional Java の TreeMap は、検索対象のノードがルートに来る木を構築し、ルートを返す。といったアルゴリズムを採用していため、 | 47 Functional Java の TreeMap は、検索対象のノードがルートになる木を構築し、ルートを返す。といったアルゴリズムを採用していため、 |
49 探索アルゴリズムの差が図\ref{find}の結果に出た。 | 48 探索アルゴリズムの差が図\ref{find}の結果に出た。 |
50 その他の処理についても、Jungleの TreeMap の方が高速に動作していた。 | 49 その他の処理についても、Jungleの TreeMap の方が高速に動作していた。 |
51 | 50 |
52 \newpage | 51 \newpage |
53 \section{Index の差分 Update の測定} | 52 \section{Index の差分 Update の測定} |
68 図\ref{index}より、Index の Full Update は、グラフがO(n\verb|^|2)なのに対し、 差分 Update は、O(n)で行えている。 | 67 図\ref{index}より、Index の Full Update は、グラフがO(n\verb|^|2)なのに対し、 差分 Update は、O(n)で行えている。 |
69 | 68 |
70 しかし、Jungleでは木に変更を加える際、毎回 Commit を行うわけでなく、 基本的に複数回変更を行った後、一気にCommit を行う。 | 69 しかし、Jungleでは木に変更を加える際、毎回 Commit を行うわけでなく、 基本的に複数回変更を行った後、一気にCommit を行う。 |
71 差分 Update は、変更を加えたノードを記憶し、 Commit 時に Index の更新を行う。 | 70 差分 Update は、変更を加えたノードを記憶し、 Commit 時に Index の更新を行う。 |
72 一方、Full Update では、 Commit を行うまでに木に加えた変更の数に関係なく、新しい Index を構築する。 | 71 一方、Full Update では、 Commit を行うまでに木に加えた変更の数に関係なく、新しい Index を構築する。 |
73 よって、 Commit を行うまでに行う木の編集回数が増えた場合、 Index の Full Update と 差分 Update では、Full Update の方が、Index の Update にかかる時間の短縮率が大きい。 | 72 よって、 Commit を行うまでに行う木の編集回数が増えた場合、 Index の Full Update と 差分 Update では、差分 Update の方が、Index に対して多くの変更を行うことになる。 |
74 そのため、Commit を行うまでの 木に対する変更回数によっては、 Full Update の方が高速に Index の構築を行える可能性がある。 | 73 そのため、Commit を行うまでの 木に対する変更回数によっては、 Full Update の方が高速に Index の構築を行える可能性がある。 |
75 | 74 |
76 そこで、図\ref{index2}に、Commit を行うまでに行った木の編集回数と、 Index の Update 速度の測定結果を記述する。 | 75 そこで、図\ref{index2}に、Commit を行うまでに行った木の編集回数と、 Index の Update 速度の測定結果を記述する。 |
77 X軸は、1回の Commit を行うまでに木に行った変更のセット回数。 | 76 X軸は、1回の Commit を行うまでに木に行った変更のセット回数。 |
78 Y軸は、Commit にかかった時間を表す。 | 77 Y軸は、Commit にかかった時間を表す。 |
87 | 86 |
88 図\ref{index2} より、Commit の前に行った木の編集回数に関係なく、基本的に Index の更新は差分 Update の方が早いことがわかった。 | 87 図\ref{index2} より、Commit の前に行った木の編集回数に関係なく、基本的に Index の更新は差分 Update の方が早いことがわかった。 |
89 | 88 |
90 | 89 |
91 \newpage | 90 \newpage |
92 \section{正順線形木の構築時間の測定} | 91 \section{正順の線形木の構築時間の測定} |
93 7章で実装した、 Differential Jungle Tree の性能測定を行う。 | 92 7章で実装した、 Differential Jungle Tree の性能測定を行う。 |
94 比較対象は、Default Jungle Tree を用いる。 | 93 比較対象は、Default Jungle Tree を用いる。 |
95 図\ref{dfTree}は、正順の木を構築するまでにかかった時間のベンチマークである。 | 94 図\ref{dfTree}は、正順の木を構築するまでにかかった時間のベンチマークである。 |
96 X 軸は、構築した木のノード数。 | 95 X 軸は、構築した木のノード数。 |
97 Y 軸は、構築にかかった時間を表す。 | 96 Y 軸は、構築にかかった時間を表す。 |
98 また、木を構築する正確な時間を測定するため、Index は作っていない。 | 97 また、木のみを構築する時間を測定するため、Index は作っていない。 |
99 | 98 |
100 \begin{figure}[htpb] | 99 \begin{figure}[htpb] |
101 \begin{center} | 100 \begin{center} |
102 \includegraphics[scale=0.6]{result/createListTree.pdf} | 101 \includegraphics[scale=0.6]{result/createListTree.pdf} |
103 \caption{Differential Tree と Default Jungle Tree} | 102 \caption{Differential Tree と Default Jungle Tree} |
104 \label{dfTree} | 103 \label{dfTree} |
105 \end{center} | 104 \end{center} |
106 \end{figure} | 105 \end{figure} |
107 | 106 |
108 図\ref{dfTree}より、Default Jungle Tree より、Differential Jungle Tree の方が高速に木の構築している。 | 107 図\ref{dfTree}より、Default Jungle Tree より、Differential Jungle Tree の方が高速に木の構築している。 |
109 これは、Default Jungle Tree が、木を構築する際に複製を行うのに対し、Differential Jungle Tree は破壊的に木を構築しているからである。 | 108 これは、Default Jungle Tree が、木を構築する際に複製を行うのに対し、Differential Jungle Tree は複製を行っていないからである。 |
109 期待通りの結果が出たといえる。 | |
110 | |
110 | 111 |
111 \section{Red Black Jungle Tree の測定} | 112 \section{Red Black Jungle Tree の測定} |
112 8章で実装した、Red Black Jungle Tree の性能測定を行う。 | 113 8章で実装した、Red Black Jungle Tree の性能測定を行う。 |
113 比較対象は、Default Jungle Tree を用いる。 | 114 比較対象は、Default Jungle Tree を用いる。 |
114 図\ref{redblack}は、正順の木を構築するまでにかかった時間のベンチマークである。 | 115 図\ref{redblack}は、正順の木を構築するまでにかかった時間のベンチマークである。 |