Compare commits
2 commits
cd93faa43e
...
91c76b74b9
Author | SHA1 | Date | |
---|---|---|---|
|
91c76b74b9 | ||
|
56139bd08c |
14 changed files with 624 additions and 12 deletions
175
beamer-config.tex
Normal file
175
beamer-config.tex
Normal file
|
@ -0,0 +1,175 @@
|
|||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[ngerman,english]{babel}
|
||||
|
||||
% -- https://www.ctan.org/pkg/newtx?lang=en
|
||||
\usepackage{newtxtext,newtxmath}
|
||||
|
||||
% -- https://www.ctan.org/pkg/scrextend
|
||||
\usepackage{scrextend}
|
||||
|
||||
\usepackage{booktabs}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{threeparttable}
|
||||
\usepackage{multirow}
|
||||
|
||||
\usepackage{pifont}
|
||||
|
||||
% get layout information
|
||||
\usepackage{layout}
|
||||
|
||||
\usepackage{rotating}
|
||||
\usepackage{adjustbox}
|
||||
\usepackage{setspace}
|
||||
\usepackage{ragged2e}
|
||||
\usepackage{lipsum}
|
||||
\usepackage{blindtext}
|
||||
\usepackage{calc}
|
||||
|
||||
\usepackage{eqnarray,amsmath}
|
||||
\usepackage[linesnumbered]{algorithm2e}
|
||||
|
||||
% -- Absolute positions
|
||||
\usepackage[absolute,overlay]{textpos}
|
||||
|
||||
\usepackage{tcolorbox}
|
||||
\tcbuselibrary{most}
|
||||
|
||||
\usepackage{soul}
|
||||
|
||||
%improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075
|
||||
\makeatletter
|
||||
\g@addto@macro{\UrlBreaks}{\UrlOrds}
|
||||
\makeatother
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Hyperreferences
|
||||
% -------------------------------------------------------------
|
||||
\usepackage{hyperref}
|
||||
\hypersetup{colorlinks=true,linkcolor=,urlcolor=gray70,citecolor=blue1}
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Bibliography
|
||||
% -------------------------------------------------------------
|
||||
|
||||
\usepackage[%
|
||||
%sorting=debug,
|
||||
%natbib=true,
|
||||
%backend=biber,bibencoding=utf8,
|
||||
backend=bibtex8,bibencoding=ascii,language=auto,natbib=true,%maxbibnames=10,
|
||||
sorting=nyt,
|
||||
style=alphabetic,
|
||||
maxalphanames=1
|
||||
%minnames=3,
|
||||
%maxnames=6,
|
||||
%doi=false
|
||||
]{biblatex}
|
||||
|
||||
% -- remove plus sign in labels [Stö+18]
|
||||
\renewcommand*{\labelalphaothers}{}
|
||||
|
||||
% -- make bibliography entries smaller
|
||||
\renewcommand\bibfont{\scriptsize}
|
||||
% -- and kill the abominable icon
|
||||
\setbeamertemplate{bibliography item}[text]
|
||||
|
||||
%\addbibresource{bibliography.bib}
|
||||
%\addbibresource{bibliography-2.bib}
|
||||
|
||||
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Minted Code Listing
|
||||
% -------------------------------------------------------------
|
||||
% Need the following Python package:
|
||||
% - Pygments (http://pygments.org/)
|
||||
%
|
||||
% Requires the -shell-escape flag when calling LaTeX !!!!
|
||||
%
|
||||
% List all styles:
|
||||
% $ pygmentize -L styles
|
||||
% \usemintedstyle{monokai}
|
||||
%
|
||||
% List all Languages:
|
||||
% $ pygmentize -L lexers
|
||||
|
||||
|
||||
%\usepackage[titles]{tocloft}
|
||||
%\newlistof{listing}{lol}{Listings}
|
||||
%\usepackage[newfloat]{minted}
|
||||
%\usepackage{caption}
|
||||
%\renewcommand{\cftlistingpresnum}{Listing~}
|
||||
%\setlength{\cftlistingnumwidth}{2,8cm}
|
||||
|
||||
\usepackage{minted}
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Captions
|
||||
% -------------------------------------------------------------
|
||||
\usepackage{caption}
|
||||
\captionsetup{%
|
||||
justification=raggedright,
|
||||
singlelinecheck=false
|
||||
}
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
|
||||
|
||||
\renewcommand\thefootnote{\textbf{\textcolor{blue1}{\arabic{footnote}}}}
|
||||
\renewcommand{\footnotesize}{\fontsize{6pt}{7pt}\selectfont}
|
||||
|
||||
%% Insert line break in algorithm
|
||||
\newcommand{\WRP}{\par\qquad\(\hookrightarrow\)\enspace}
|
||||
|
||||
%\newcommand{\showHorizontalNavBar}{}
|
||||
\def\showHorizontalNavBar{}
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Color Boxes
|
||||
% -------------------------------------------------------------
|
||||
|
||||
\newtcolorbox{shadowbox1}[2][]{%
|
||||
enhanced,
|
||||
size=small,
|
||||
width=#2,
|
||||
colback=gray1,
|
||||
colframe=gray1,
|
||||
sharp corners,
|
||||
drop small lifted shadow=black,
|
||||
#1
|
||||
}
|
||||
|
||||
|
||||
% -------------------------------------------------------------
|
||||
% Images
|
||||
% -------------------------------------------------------------
|
||||
|
||||
\newcommand{\rotimagewithsource}[3]{%
|
||||
\begin{figure}
|
||||
\hypersetup{urlcolor=gray50}
|
||||
\setbeamerfont{caption}{size=\fontsize{2pt}{3pt}\selectfont}
|
||||
\setbeamercolor{caption}{fg=gray50}
|
||||
\captionsetup{labelformat=empty,justification=raggedright,singlelinecheck=false}%
|
||||
\begin{adjustbox}{addcode={\begin{minipage}{\width}}{\caption{#3}\end{minipage}},#1,center}
|
||||
#2
|
||||
\end{adjustbox}
|
||||
\addtocounter{figure}{-1}
|
||||
\end{figure}
|
||||
}
|
||||
|
||||
|
||||
\newcommand{\rotimagewithcaption}[3]{%
|
||||
\begin{figure}
|
||||
\begin{adjustbox}{addcode={\begin{minipage}{\width}}{\caption{#3}\end{minipage}},#1,center}
|
||||
#2
|
||||
\end{adjustbox}
|
||||
\end{figure}
|
||||
}
|
||||
|
||||
|
263
beamerthemecleangreen.sty
Normal file
263
beamerthemecleangreen.sty
Normal file
|
@ -0,0 +1,263 @@
|
|||
%
|
||||
% Latex-Beamer theme CleanGreen
|
||||
%
|
||||
% Author: André Conrad
|
||||
% Date: 2023-02-23
|
||||
% Version: 0.1
|
||||
%
|
||||
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
|
||||
% ---------------------------------------
|
||||
%% Loading packages
|
||||
% ---------------------------------------
|
||||
\RequirePackage{tikz}
|
||||
\usetikzlibrary{%
|
||||
mindmap,
|
||||
trees
|
||||
}
|
||||
|
||||
\RequirePackage{csquotes}
|
||||
|
||||
|
||||
|
||||
%Define a reference depth.
|
||||
%You can choose either relative or absolute.
|
||||
%--------------------------
|
||||
\newlength{\DepthReference}
|
||||
%\settodepth{\DepthReference}{g}%relative to a depth of a letter.
|
||||
\setlength{\DepthReference}{2pt}%absolute value.
|
||||
|
||||
%Define a reference Height.
|
||||
%You can choose either relative or absolute.
|
||||
%--------------------------
|
||||
\newlength{\HeightReference}
|
||||
%\settoheight{\HeightReference}{T}
|
||||
\setlength{\HeightReference}{6pt}
|
||||
|
||||
%--------------------------
|
||||
\newlength{\Width}%
|
||||
\newcommand{\navbox}[2][red]%
|
||||
{%
|
||||
\settowidth{\Width}{#2}%
|
||||
%\setlength{\fboxsep}{0pt}%
|
||||
\colorbox{#1}%
|
||||
{%
|
||||
\raisebox{-\DepthReference}%
|
||||
{%
|
||||
\parbox[b][\HeightReference+\DepthReference][c]{\Width}{\centering#2}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\setlength{\fboxsep}{1pt}
|
||||
|
||||
|
||||
% ---------------------------------------
|
||||
%% Colors
|
||||
% ---------------------------------------
|
||||
\definecolor{gray20}{HTML}{CCCCCC}
|
||||
\definecolor{gray70}{HTML}{4C4C4C}
|
||||
|
||||
\definecolor{green1}{HTML}{A0DDCE}
|
||||
\definecolor{green2}{HTML}{E9F8F3}
|
||||
|
||||
\definecolor{blue1}{HTML}{0070C0}
|
||||
\definecolor{blue2}{HTML}{004C97}
|
||||
|
||||
\definecolor{lightbrown1}{HTML}{E3DBD3}
|
||||
\definecolor{brown1}{HTML}{AD8f67}
|
||||
|
||||
|
||||
\definecolor{webgreen}{rgb}{0,.5,0}
|
||||
\definecolor{webbrown}{rgb}{.6,0,0}
|
||||
|
||||
\definecolor{gray1}{rgb}{.92,.92,.92}
|
||||
\definecolor{gray2}{rgb}{.85,.85,.85}
|
||||
\definecolor{gray50}{rgb}{.5,.5,.5}
|
||||
|
||||
\definecolor{applegreen}{rgb}{0.55, 0.71, 0.0}
|
||||
\definecolor{brickred}{rgb}{0.8, 0.25, 0.33}
|
||||
\definecolor{darklavender}{rgb}{0.45, 0.31, 0.59}
|
||||
\definecolor{charcoal}{rgb}{0.21, 0.27, 0.31}
|
||||
|
||||
% Title slide
|
||||
\setbeamercolor*{title page header}{fg=gray70}
|
||||
\setbeamercolor*{author}{fg=gray70}
|
||||
\setbeamercolor*{date}{fg=gray70}
|
||||
|
||||
% Framtitle
|
||||
\setbeamercolor*{frametitle}{fg=gray70,bg=white}
|
||||
|
||||
% Footer
|
||||
\setbeamercolor{footline}{fg=gray70,bg=white}
|
||||
|
||||
% List items
|
||||
\setbeamercolor*{item}{fg=black}
|
||||
\setbeamercolor*{enumerate item}{fg=black}
|
||||
|
||||
% Blocks
|
||||
\setbeamercolor{block title}{fg=blue1}
|
||||
%\setbeamercolor{block body}{bg=green2}
|
||||
|
||||
% Caption
|
||||
\setbeamercolor{caption name}{fg=blue1}
|
||||
\setbeamercolor{caption}{fg=gray70}
|
||||
|
||||
% Table of Content
|
||||
\setbeamercolor{section in toc}{fg=blue1}
|
||||
\setbeamercolor{subsection in toc}{fg=blue1}
|
||||
|
||||
% Bibliography
|
||||
\setbeamercolor*{bibliography item}{fg=black}
|
||||
\setbeamercolor*{bibliography entry title}{fg=blue2}
|
||||
\setbeamercolor*{bibliography entry author}{fg=black}
|
||||
\setbeamercolor*{bibliography entry location}{fg=black}
|
||||
\setbeamercolor*{bibliography entry note}{fg=black}
|
||||
|
||||
|
||||
% ---------------------------------------
|
||||
%% Font Size
|
||||
% ---------------------------------------
|
||||
|
||||
\setbeamerfont{frametitle}{size=\huge}
|
||||
\setbeamerfont{framesubtitle}{size=\normalsize}
|
||||
|
||||
\setbeamerfont{title}{size=\huge}
|
||||
\setbeamerfont{subtitle}{size=\normalsize}
|
||||
\setbeamerfont*{author}{size=\normalsize}
|
||||
\setbeamerfont*{date}{size=\small}
|
||||
\setbeamerfont*{frametitle}{size=\huge}
|
||||
\setbeamerfont*{footline}{size=\tiny}
|
||||
\setbeamerfont*{institute}{size=\footnotesize}
|
||||
|
||||
%\setbeamerfont{itemize/enumerate body}{size=\Large}
|
||||
%\setbeamerfont{itemize/enumerate subbody}{size=\Large}
|
||||
%\setbeamerfont{itemize/enumerate subsubbody}{size=\large}
|
||||
\setbeamerfont{enumerate item}{series=\bfseries}
|
||||
\setbeamerfont{description item}{series=\bfseries}
|
||||
|
||||
\setbeamerfont{caption}{size=\tiny}
|
||||
|
||||
% Table of Content
|
||||
\setbeamerfont{section in toc}{size=\normalsize}
|
||||
\setbeamerfont{subsection in toc}{size=\normalsize}
|
||||
|
||||
\setbeamerfont{section number projected}{%
|
||||
family=\rmfamily,series=\bfseries,size=\normalsize}
|
||||
\setbeamercolor{section number projected}{bg=green1,fg=black}
|
||||
|
||||
% ball, circle and square
|
||||
\setbeamertemplate{sections/subsections in toc}[circle]
|
||||
|
||||
|
||||
% ---------------------------------------
|
||||
%% Frame (inner/outer)
|
||||
% ---------------------------------------
|
||||
|
||||
\setbeamertemplate{navigation symbols}{}
|
||||
\setbeamertemplate{caption}[numbered]
|
||||
|
||||
\setbeamertemplate{enumerate item}{\textbf{\arabic{enumi}.}}
|
||||
\setbeamertemplate{enumerate subitem}{\textbf{\arabic{enumii}.}}
|
||||
|
||||
\setbeamersize{text margin left=16pt,text margin right=16pt}
|
||||
|
||||
|
||||
% -----------------------
|
||||
%% Title Page
|
||||
% -----------------------
|
||||
\defbeamertemplate*{title page}{cleangreen}
|
||||
{
|
||||
\centering
|
||||
|
||||
\vskip 1cm%
|
||||
|
||||
\begin{beamercolorbox}[center,sep=8pt]{title page header}
|
||||
\usebeamerfont{title}\textbf{\inserttitle}\par%
|
||||
\vskip 0.25cm%
|
||||
\usebeamerfont{subtitle}\insertsubtitle
|
||||
\end{beamercolorbox}%
|
||||
|
||||
\textcolor{green1}{\rule{.96\textwidth}{1.5pt}}
|
||||
|
||||
\vskip 0.75cm%
|
||||
|
||||
\begin{beamercolorbox}[center]{author}
|
||||
\usebeamerfont{author}\insertauthor\\[2ex]
|
||||
\usebeamerfont{institute}\insertinstitute\\[5ex]
|
||||
\usebeamerfont{date}\insertdate
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
|
||||
|
||||
% -----------------------
|
||||
%% Definition - Horizontal Nav Bar
|
||||
% -----------------------
|
||||
|
||||
\setbeamertemplate{section in head/foot}{%
|
||||
%\colorbox{green2}{\strut\bfseries\insertsectionhead}
|
||||
\navbox[green2]{\bfseries\insertsectionhead}
|
||||
}
|
||||
|
||||
\setbeamertemplate{section in head/foot shaded}{%
|
||||
%\color{gray2}\insertsectionhead
|
||||
\navbox[white]{\bfseries\color{gray2}\insertsectionhead}
|
||||
}
|
||||
|
||||
|
||||
% -----------------------
|
||||
%% Frametitle
|
||||
% -----------------------
|
||||
\defbeamertemplate*{frametitle}{cleangreen}
|
||||
{
|
||||
\begin{beamercolorbox}[left, ht=36pt, wd=\paperwidth, leftskip=16pt, rightskip=16pt]{frametitle}
|
||||
\ifx\insertframesubtitle\@empty%
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (\textwidth,0) [line width=1pt, green2];
|
||||
\draw (0,4pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\usebeamerfont{frametitle}\insertframetitle};
|
||||
\end{tikzpicture}
|
||||
\else%
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (\textwidth,0) [line width=1pt, green2];
|
||||
\draw (0,1pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\small\insertframesubtitle};
|
||||
\draw (0,13pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\Large\insertframetitle};
|
||||
\end{tikzpicture}
|
||||
\fi
|
||||
\ifx\showHorizontalNavBar\empty%
|
||||
\vspace*{-18pt}
|
||||
\else
|
||||
\hspace*{-13.24pt}
|
||||
\footnotesize
|
||||
\insertnavigation{\textwidth}
|
||||
\fi
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
|
||||
|
||||
% -----------------------
|
||||
%% Footline
|
||||
% -----------------------
|
||||
\newcommand{\footlinetext}[1]{\def\insertfootlinetext{#1}}
|
||||
|
||||
\defbeamertemplate*{footline}{cleangreen}
|
||||
{
|
||||
\begin{beamercolorbox}[left, ht=20pt, wd=\textwidth, leftskip=16pt, rightskip=16pt]{footline}%
|
||||
\usebeamerfont{footline}
|
||||
\ifx\insertframetitle\@empty%
|
||||
%\hfill\insertpagenumber\vspace{2.75mm}
|
||||
\raggedleft\insertframenumber~/~\inserttotalframenumber\hspace{12.25pt}\vspace{8pt}
|
||||
\else%
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (423pt,0) [line width=1pt, green2];
|
||||
\draw (-3pt,0) node [anchor=north west, inner sep=3pt] {\includegraphics[height=14pt]{gfx/fernuni_hagen_logo.jpg}};
|
||||
\draw (100pt,-8pt) node [anchor=north west, inner sep=0mm, text depth=1mm] {\insertfootlinetext};
|
||||
\draw (423pt,-8pt) node [anchor=north east,inner sep=0mm, text depth=1mm] {\insertframenumber~/~\inserttotalframenumber};
|
||||
\end{tikzpicture}
|
||||
\fi
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
|
||||
\mode<all>
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
%********************************************************************
|
||||
% Appendix
|
||||
%*******************************************************
|
||||
|
|
|
@ -84,7 +84,8 @@ hostname="http://localhost:8080/WedekindJSF-1.0.0"
|
|||
# the Array of the Urls
|
||||
url_arr=(
|
||||
"$hostname/index.xhtml"
|
||||
"$hostname/view/document/list.xhtml"
|
||||
#"$hostname/view/document/list.xhtml"
|
||||
"$hostname/view/document/list_mv.xhtml"
|
||||
#"$hostname/view/correspondent/list.xhtml"
|
||||
#"$hostname/view/person/list.xhtml"
|
||||
)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{Einleitung}
|
||||
\label{ch:intro}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{Grundlagen}
|
||||
\label{ch:basics}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{Konzept}
|
||||
\label{ch:concept}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{Performance-Untersuchung}
|
||||
\label{ch:performance-checking}
|
||||
|
@ -51,7 +52,7 @@ Dies zeigt direkt, dass es ein problem in der Freigabe der Objekte gibt, da dass
|
|||
das Problem nicht löst, sondern nur verschiebt.
|
||||
|
||||
Als Grundlage für die Vergleiche wurden eine Messung durchgeführt, bei der alle Caches deaktiviert wurden und keine
|
||||
Änderung am Code vorgenommen wurde. Das Ergebnis dieser Messung ist in \ref{tab:MeasureWithoutCache} zu finden. Diese
|
||||
Änderung am Code vorgenommen wurde. Das Ergebnis dieser Messung ist in \ref{tbl:measure-without-cache} zu finden. Diese
|
||||
zeigen auch direkt ein erwartetes Ergebnis, dass der erste Aufruf bedeutend länger dauert als die Nachfolgenden.
|
||||
Ebenfalls sieht man eindeutig, dass die Anzahl der Anfragen nach dem ersten Aufruf immer die gleiche Anzahl besitzen.
|
||||
Der Speicherbedarf steigt auch relative gleichmässig, was nicht recht ins Bild passt, da hier keine Objekte im Cache
|
||||
|
@ -72,7 +73,7 @@ gehalten werden sollten.
|
|||
\hline
|
||||
\end{tabular}
|
||||
\caption{Messung ohne Caches}
|
||||
\label{tab:MeasureWithoutCache}
|
||||
\label{tbl:measure-without-cache}
|
||||
\end{table}
|
||||
|
||||
Vor jedem weiteren Test-Lauf wurde die Domain beendet und komplett neugestartet, um mit einer frischen Instanz zu
|
||||
|
@ -88,8 +89,8 @@ Die Cache-Einstellung von OpenJPA werden über die zwei Einstellungen \texttt{op
|
|||
\textit{CacheSize} die Anzahl der Elementen im Cache gesteuert werden. Wird diese Anzahl erreicht, dann werden zufällige
|
||||
Objekte aus dem Cache entfernt und in eine SoftReferenceMap übertragen.
|
||||
|
||||
Zuerst wird mit aktivierten Cache mit einer Cache-Größe von 1000 Elemente getestet. Wie in \ref{tbl:MeasureOJPAactive}
|
||||
zu sehen, dauert auch hier der erste Aufruf minimal länger als ohne akivierten Cache. Alle Nachfolgenden Aufrufe
|
||||
Zuerst wird mit aktivierten Cache mit einer Cache-Größe von 1000 Elemente getestet. Wie in \ref{tbl:measure-ojpa-active}
|
||||
zu sehen, dauert auch hier der erste Aufruf minimal länger als ohne akiviertem Cache. Alle Nachfolgenden Aufrufe
|
||||
wiederrum sind um 100ms schneller in der Verarbeitung. Auch bei der Anzahl der Anfragen an die Datenbank kann mehr den
|
||||
Rückgang der Anfragen sehr gut sehen. Aktuell kann die Verringerung des wachsenden Speicherbedarfs nur nicht erklärt
|
||||
werden.
|
||||
|
@ -109,11 +110,11 @@ werden.
|
|||
\hline
|
||||
\end{tabular}
|
||||
\caption{Messung mit OpenJPA-Cache und Größe auf 1000}
|
||||
\label{tbl:MeasureOJPAactive}
|
||||
\label{tbl:measure-ojpa-active}
|
||||
\end{table}
|
||||
|
||||
Bei einer erhöhten Cache-Größe, zeigt sich auf den ersten Blick ein noch besseres Bild ab, wie in
|
||||
\ref{tbl:MeasureOJPAactivebigger} ersichtlich ist. Der erste Aufruf entspricht der Laufzeit mit geringerer Cache-Größe,
|
||||
\ref{tbl:measure-ojpa-active-bigger} ersichtlich ist. Der erste Aufruf entspricht der Laufzeit mit geringerer Cache-Größe,
|
||||
aber schon die Anfragen an die Datenbank gehen drastisch zurück. Bei den weiteren Aufrufen werden im Schnitt nun nur
|
||||
noch 6 Anfragen pro Seitenaufruf an die Datenbank gestellt, wodurch die Laufzeit im Schnitt nochmal um 100 ms
|
||||
beschleunigt werden konnte.
|
||||
|
@ -133,7 +134,7 @@ beschleunigt werden konnte.
|
|||
\hline
|
||||
\end{tabular}
|
||||
\caption{Messung mit OpenJPA-Cache und Größe auf 10000}
|
||||
\label{tbl:MeasureOJPAactivebigger}
|
||||
\label{tbl:measure-ojpa-active-bigger}
|
||||
\end{table}
|
||||
|
||||
\mytodos{pin und unpin noch mit einbringen? SoftReferenceMap nochmal genau durchleuchte, laut doku entfällt dort nichts
|
||||
|
@ -184,6 +185,7 @@ Anzahl der Abfragen an die Datenbank drastisch reduziert werden. Selbst die Lauf
|
|||
\label{sec:performance-checking:investigation-application:caching-ejb}
|
||||
|
||||
Die Cache-Einstellungen des \ac{EJB} sind in der Admin-Oberfläche des Payara-Servers zu erreichen. Hier
|
||||
\mytodos{Cache config noch definieren}
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
|
@ -199,19 +201,111 @@ Die Cache-Einstellungen des \ac{EJB} sind in der Admin-Oberfläche des Payara-Se
|
|||
4 & 281 & 318 & 398 & 12080 & 1191.25 & 1305.29 & 114.04 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Messung mit OpenJPA-Cache und Größe auf 10000}
|
||||
\label{tbl:MeasureEJBAactive}
|
||||
\caption{Messung mit \ac{EJB}-Cache}
|
||||
\label{tbl:measure-ejb-cache-active}
|
||||
\end{table}
|
||||
|
||||
\subsection{Abfragen JPQL}
|
||||
\subsection{Abfragen \ac{JPQL}}
|
||||
\label{sec:performance-checking:investigation-application:query-jpql}
|
||||
|
||||
Für die \ac{JPQL} wird ein \ac{SQL} ähnlicher Syntax verwendet um die Abfragen an die Datenbank durchzuführen. Für die
|
||||
Dokumentenliste wird der Code aus \ref{lst:jpql-document-list-jpql} verwendet. Die Namen mit vorangestellten Doppelpunkt
|
||||
sind Übergabevariablen.
|
||||
|
||||
\begin{lstlisting}[language=Java,caption={JPQL Dokumentenliste},label=lst:jpql-document-list-jpql]
|
||||
SELECT DISTINCT d FROM Document d
|
||||
LEFT JOIN FETCH d.authorPerson
|
||||
LEFT JOIN FETCH d.coauthorPersonSet
|
||||
LEFT JOIN FETCH d.addresseePersonSet
|
||||
WHERE d.validUntil > :now
|
||||
AND d.isPublishedInDb = :published
|
||||
ORDER BY d.documentId ASC
|
||||
\end{lstlisting}
|
||||
|
||||
In dem dazugehörigen Code am Server wird der JPQL-Code als NamedQuery hinterlegt und über den Name \textit{Document.findAll}
|
||||
referenziert. In eingriff in die Abfrage ist hier leider nicht möglich, wie man im Code \ref{lst:jpql-document-list}
|
||||
sehen kann.
|
||||
|
||||
\begin{lstlisting}[language=Java,caption={Java JPQL Dokumentenliste},label=lst:jpql-document-list]
|
||||
List<Document> myResultList = createNamedTypedQuery("Document.findAll")
|
||||
.setParameter("now", _IncludeDeleted ? new Date(0) : Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()))
|
||||
.setParameter("published", true)
|
||||
.setFirstResult(_Start)
|
||||
.setMaxResults(_Size)
|
||||
.setHint("javax.persistence.query.fetchSize", _Size)
|
||||
.getResultList();
|
||||
|
||||
// Uebergabe der Ergebnisliste
|
||||
if(myResultList != null && !myResultList.isEmpty()) {
|
||||
myResult.addAll(myResultList);
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Da dieser Code direkt so aus dem Projekt kommt, wird hierfür keine gesonderte Zeitmessung durchgeführt, da dies durch
|
||||
\ref{tbl:measure-without-cache} geschehen ist.
|
||||
|
||||
\subsection{Abfragen Criteria API}
|
||||
\label{sec:performance-checking:investigation-application:query-criteria-api}
|
||||
|
||||
Für die Criteria API wird die Abfrage nicht in einem SQL-Dialekt beschreiben. Hierbei werden über Attribute die
|
||||
Verlinkung zur Datenbank durchgeführt. An der Klasse selbst wird der Tabellenname definiert und an den Attributen die
|
||||
Spaltennamen. Um die Anfrage durchführen muss nun nur noch Datenklasse angegeben werden und mit den Parametern
|
||||
versorgt werden, wie es in \ref{lst:criteria-api} gezeigt wird.
|
||||
|
||||
\begin{lstlisting}[language=Java,caption={Criteria API Dokumentenliste},label=lst:criteria-api]
|
||||
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
|
||||
CriteriaQuery<Document> cq = cb.createQuery(Document.class);
|
||||
Root<Document> from = cq.from(Document.class);
|
||||
ParameterExpression<Boolean> includedPara = cb.parameter(Boolean.class, "published");
|
||||
ParameterExpression<Date> validPart = cb.parameter(Date.class, "now");
|
||||
|
||||
CriteriaQuery<Document> select = cq.select(from)
|
||||
.where(cb.and(
|
||||
cb.equal(from.get("isPublishedInDb"), includedPara),
|
||||
cb.greaterThan(from.get("validUntil"), validPart)
|
||||
));
|
||||
TypedQuery<Document> typedQuery = getEntityManager().createQuery(select)
|
||||
.setParameter("now", _IncludeDeleted ? new Date(0) : Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()))
|
||||
.setParameter("published", true)
|
||||
.setFirstResult(_Start)
|
||||
.setMaxResults(_Size)
|
||||
.setHint("javax.persistence.query.fetchSize", _Size);
|
||||
List<Document> myResultList = typedQuery.getResultList();
|
||||
|
||||
// Uebergabe der Ergebnisliste
|
||||
if (myResultList != null && !myResultList.isEmpty()) {
|
||||
myResult.addAll(myResultList);
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Wie in der Messung \ref{tbl:measure-criteria-api} zu sehen, unterscheiden sich die Abfragezeiten nur marginal von
|
||||
denen mit \ac{JPQL}. Wenn man sich den Code im Debugger anschaut, sieht man auch, dass die zusammengesetzten Abfragen
|
||||
in den Java-Objekten fast identisch sind. Und in der Datenbank sind die Anfragen identisch zu denen über JPQL.
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\begin{tabular}{|r|r|r|r|r|r|r|r|}
|
||||
\hline
|
||||
& \multicolumn{3}{|c|}{Aufrufzeit} & & \multicolumn{3}{|c|}{RSS} \\
|
||||
\hline
|
||||
\# & min & avg & max & Queries & davor & danach & diff \\
|
||||
\hline
|
||||
1 & 396 & 572 & 1535 & 12173 & 796.59 & 970.10 & 173.51 \\
|
||||
2 & 333 & 366 & 397 & 12080 & 982.28 & 1064.12 & 81.84 \\
|
||||
3 & 286 & 339 & 554 & 12080 & 1048.12 & 1162.92 & 114.80 \\
|
||||
4 & 293 & 317 & 388 & 12080 & 1150.43 & 1263.77 & 113.34 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Messung mit Criteria-API ohne Cache}
|
||||
\label{tbl:measure-criteria-api}
|
||||
\end{table}
|
||||
|
||||
|
||||
\subsection{materialized views}
|
||||
\label{sec:performance-checking:investigation-application:materialized-views}
|
||||
|
||||
\mytodos{Sourcecode erfragen bei Herrn Holstein!}
|
||||
|
||||
\subsection{cached queries}
|
||||
\label{sec:performance-checking:investigation-application:cached-query}
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{???Optimierung???}
|
||||
\label{ch:optimizing}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
\chapter{Evaluierung}
|
||||
\label{ch:evaluation}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
% !TeX root = ../../thesis.tex
|
||||
|
||||
%*******************************************************
|
||||
% Acronyms
|
||||
%*******************************************************
|
||||
|
@ -22,9 +24,11 @@
|
|||
\acro{CSS}{Cascading Style Sheets}
|
||||
\acro{SFSB}{Stateful Session-Bean}
|
||||
\acro{JPA}{Java Persistence API}
|
||||
\acro{JPQL}{Java Persistence Query Language}
|
||||
\acro{API}{Application Programming Interface}
|
||||
\acro{UML}{Unified Modeling Language}
|
||||
\acro{GB}{Gigabyte}
|
||||
\acro{SQL}{Structured Query Language}
|
||||
\end{acronym}
|
||||
|
||||
\cleardoublepage
|
||||
|
|
BIN
thesis-beamer.pdf
Normal file
BIN
thesis-beamer.pdf
Normal file
Binary file not shown.
68
thesis-beamer.tex
Normal file
68
thesis-beamer.tex
Normal file
|
@ -0,0 +1,68 @@
|
|||
\documentclass[aspectratio=169]{beamer}
|
||||
\input{beamer-config}
|
||||
\usetheme{cleangreen}
|
||||
|
||||
\include{marco-galster-config}
|
||||
\addbibresource{expose-ref.bib}
|
||||
|
||||
% ACHTUNG: Damit sich die Datei sauber im Visual Studio Code übersetzten lässt, muss in den Benutzer-Einstellungen
|
||||
% das Element "latex-workshop.latex.tools" aufgenommen werden und der erscheinende Eintrag für latexmk bei den
|
||||
% args am Anfang um den folgenden Eintrage erweitert werden:
|
||||
% "-shell-escape"
|
||||
|
||||
\title{\myTitle}
|
||||
%\subtitle{}
|
||||
\author[M. Galster]{\myName}
|
||||
\footlinetext{\insertshortauthor \hspace{4em} \inserttitle}
|
||||
\institute{University~of~Hagen,~Germany}
|
||||
\date{\myTime}
|
||||
|
||||
\begin{document}
|
||||
\selectlanguage{ngerman}
|
||||
|
||||
% -- SLIDE -- Title
|
||||
\begin{frame}[plain]
|
||||
\titlepage
|
||||
\end{frame}
|
||||
|
||||
% -- SLIDE -- TOC
|
||||
\begin{frame}[c]
|
||||
\frametitle{Übersicht}
|
||||
|
||||
%left space
|
||||
\begin{addmargin*}{2.5em}
|
||||
%enhance line space
|
||||
\begin{spacing}{1}
|
||||
\parbox{\linewidth}{%
|
||||
\tableofcontents
|
||||
}
|
||||
\end{spacing}
|
||||
\end{addmargin*}
|
||||
|
||||
\addtocounter{framenumber}{-1}
|
||||
|
||||
\end{frame}
|
||||
|
||||
% -- SLIDES --
|
||||
\section{Ausgangsproblem}
|
||||
\begin{frame}
|
||||
\frametitle{Ausgangsproblem}
|
||||
|
||||
Anzeige der Schichten des Systems
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
Definieren der Optimierungsansätze
|
||||
\end{frame}
|
||||
|
||||
|
||||
%% -- SLIDE -- REFERENCES
|
||||
% hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen
|
||||
\nocite{IbmOpenJPACaching2023,PostgresPro:Chap20.4:2023}
|
||||
% Für mehreren Seite bei den Referenzen ein ",allowframebreaks" in den [] hinzufügen
|
||||
\begin{frame}[t]
|
||||
\frametitle{Referenzen}
|
||||
\printbibliography[title=Referenzen]
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
Loading…
Reference in a new issue