Mercurial > hg > Papers > 2016 > kazuma-midterm
diff midterm.tex @ 5:986be79bf122
fix
author | Kazuma |
---|---|
date | Thu, 20 Oct 2016 21:02:07 +0900 |
parents | 7b3bab2431d4 |
children | dd95a76fba0c |
line wrap: on
line diff
--- a/midterm.tex Thu Oct 20 19:00:01 2016 +0900 +++ b/midterm.tex Thu Oct 20 21:02:07 2016 +0900 @@ -1,7 +1,5 @@ \documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} -\usepackage[dviout]{graphicx} -\usepackage[dvipdfm]{graphicx} +\usepackage[dvipdfmx]{graphicx} \usepackage{ascmac} \usepackage{fancyhdr} %\pagestyle{fancy} @@ -17,11 +15,11 @@ \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} -\pagestyle{\empty} - +\pagestyle{empty} +\input{dummy.tex} \begin{document} \title{Database Jungleに関する研究} -\author{135768k 武田和馬 {}{} 指導教員 : 河野真治} +\author{135768K 武田和馬 {}{} 指導教員 : 河野真治} \date{} \maketitle \thispagestyle{fancy} @@ -29,7 +27,7 @@ \section{非破壊木構造データベース} 当研究室ではデータの変更の際に過去の木構造を保存しつつ新しく木構造を作成する非破壊的木構造を用いたデータベースであるJungleを開発している。 -本研究ではJungle DBをC#で再実装を行い、Unity向けに組み込みを行う。 +本研究ではJungle DBをC\#で再実装を行い、Unity向けに組み込みを行う。 Jugnleの木は、子供を複数持つノードからなる。子供は順序付けられており、任意の位置で作成削除することができる。 @@ -47,18 +45,17 @@ Unityではデータの保存の際にMySQL、SQlite3、PlayerPrefsといった第一正規系、第二正規系のDBがよく使われている。 しかし、図1のように木構造でゲームは構成されているため、RDB向けにノードの関係を変換する必要がある。 -つまり、そのまま格納することができればスケールアウトするデータにも対応でき、データベース設計も簡略化できると考え、C#に書き直すことにした。 +つまり、そのまま格納することができればスケールアウトするデータにも対応でき、データベース設計も簡略化できると考え、C\#に書き直すことにした。 PlayerPrefsとは、Unityに特化したバイナリ形式でKey,Valueで保存されるものである。 - \section{Jungle-Sharpの実装} -JungleはJavaで書かれているものであったのでUnityで使うにはC#で実装する必要があった。 +JungleはJavaで書かれているものであったのでUnityで使うにはC\#で実装する必要があった。 \section{AtomicRefefarenceの実装} % atomic reference問題 -JavaにはAtomicRefarenceが標準であったがC#はなかったため、AtomicReferenceのClassを新たに作った。 +JavaにはAtomicRefarenceが標準であったがC\#はなかったため、AtomicReferenceのClassを新たに作った。 {\scriptsize \begin{itembox}[l]{図1 AtomicReference.cs} @@ -72,7 +69,8 @@ public bool CompareAndSet(T newValue, T prevValue) { T oldValue = value; - return (oldValue != Interlocked.CompareExchange (ref value, newValue, prevValue)); + return (oldValue != + Interlocked.CompareExchange (ref value, newValue, prevValue)); } @@ -82,7 +80,7 @@ } \end{verbatim} \end{itembox} -}\\ +} CompereAndSetメソッドではInterlocked Operationを利用した。 これによりスレッドセーフな値の変更を行うことが可能になる。 @@ -90,7 +88,7 @@ \section{Listの実装} Listを実装する際にIteratorが必要となる。 -C#にはIEnumeratorがあるのでそれを利用した。 +C\#にはIEnumeratorがあるのでそれを利用した。 {\scriptsize \begin{itembox}[l]{図2 List.cs} @@ -109,7 +107,6 @@ ListのforeachではIteratorを呼び出すため、一つずつ要素を返す必要がある。 yield returnステートメントを利用することで位置が保持され次に呼ばれた際に続きから値の取り出しが可能になる。 -\newpage \section{ベンチマーク} UnityではSqlite3,PlayerPrefsがデータの保存として利用される。 @@ -123,7 +120,7 @@ \end{itemize} \begin{figure}[h] -\includegraphics[width=2cm, bb=0 0 172 200]{benchmark.pdf} +\includegraphics[width=70mm]{pic/benchmark.pdf} \end{figure} Sqlite3では100msを超えてしまったため省略してある。