# HG changeset patch # User Kazuma # Date 1476957467 -32400 # Node ID 7b3bab2431d4ab8b82e70857b2c33d0d972ed78e # Parent cde61c2d9cdc8e4fc8ec16c42055e89e5f4a015c add benchmark.pdf diff -r cde61c2d9cdc -r 7b3bab2431d4 midterm.tex --- a/midterm.tex Thu Oct 20 14:45:14 2016 +0900 +++ b/midterm.tex Thu Oct 20 18:57:47 2016 +0900 @@ -34,7 +34,7 @@ Jugnleの木は、子供を複数持つノードからなる。子供は順序付けられており、任意の位置で作成削除することができる。 Unityは3Dゲームエンジンである。 -ゲーム構造はシーングラフを実装しており、ゲームオブジェクトの親子関係からなり、子共を複数もつノードからなる。 +ゲーム構造はシーングラフを実装しており、ゲームオブジェクトの親子関係からなり、子どもを複数もつノードからなる。 Jungleはこれと同じ構造を持っているため、相性が良い。 % ので、過去の組織のデータを参照する必要が出てくる。よって過去のデータの参照が出来るJungleと相性が良い。 @@ -43,6 +43,15 @@ % ポリシーファイルは、組織の中で申請等を行った際に、どの権限によってその申請が許諾されるのかを指定している。 % 組織のデータ、ポリシーファイル共に木構造のデータであるため、Jungleにそのまま格納できる。 +\section{Unityでの問題点} + +Unityではデータの保存の際にMySQL、SQlite3、PlayerPrefsといった第一正規系、第二正規系のDBがよく使われている。 +しかし、図1のように木構造でゲームは構成されているため、RDB向けにノードの関係を変換する必要がある。 +つまり、そのまま格納することができればスケールアウトするデータにも対応でき、データベース設計も簡略化できると考え、C#に書き直すことにした。 + +PlayerPrefsとは、Unityに特化したバイナリ形式でKey,Valueで保存されるものである。 + + \section{Jungle-Sharpの実装} JungleはJavaで書かれているものであったのでUnityで使うにはC#で実装する必要があった。 @@ -104,28 +113,21 @@ \section{ベンチマーク} UnityではSqlite3,PlayerPrefsがデータの保存として利用される。 -今回の検証はInsertを1000回行ったのち、push(またはSave)を行い時間を測定する。 - -PlayerPrefsとは、Unityに特化したバイナリ形式でKeyValueで保存されるものである。 - -JungleのInsert -1 : 13ms -2 : 20ms -3 : 21ms -4 : 20ms +今回の検証はInsertを1000回行い、push(またはSave)を行うまでの時間を測定する。 -Sqlite3のInsert -1 : 12821ms -2 : 12692ms -3 : 12670ms -4 : 12649ms +使用した機材は以下の通りである。 +\begin{itemize} +\item OS : Windows 10 +\item CPU : Intel Core i7-4700MQ 2.4GHz +\item Unity : Unity 5.4.2f1 +\end{itemize} -PlayerPrefsのInsert -1 : 40ms -2 : 28ms -3 : 29ms -4 : 29ms +\begin{figure}[h] +\includegraphics[width=2cm, bb=0 0 172 200]{benchmark.pdf} +\end{figure} +Sqlite3では100msを超えてしまったため省略してある。 +図3の結果よりJungleDBの速度を確認することができた。 \section{これからの作業}