As mentioned in earlier chapters blocking of the data cubes is necessary and in this project some experimentation has been made by trying out blocking across different dimensions. And this has been compared to the use of no blocking and just reading 1 float value at a time. The results show that as long as one reads across other dimensions than the x dimension, then it will result in good read and write rates to disk. It is also important to find a blocking method that makes it easy to add border values without jumping on disk. That is why a blocking across the z dimension is chosen. The results for I/O time given different blocking methods are shown in Table \ref{blockingio}.

\begin{table}[H]
\caption{Execution time in seconds of reads given a data size and blocking method}
\begin{tabular}{|c|c|c|c|c|}
\hline
Dimensions		&No blocking		&Blocking x axis		&Blocking y axis		&Blocking z axis \\
\hline
200x200x200		&40		&31		&2		&2		\\
\hline
400x400x400		&314	&317	&18		&18		\\
\hline
800x800x800		&2533	&2524	&150	&149	\\
\hline
\end{tabular}
\label{blockingio}
\end{table}

As mentioned earlier the I/O time tends to be unstable depending if it is buffered first or not and to stabilize it all buffering and operating system help is turned off. Then by benchmarking the C\# version and C version one can see that the C functions are better at reading from disk. This is the reason as to which a shift to C was made. I/O is one of the slowest processes since it is communicated to at a rate of MB per seconds in contrast to memory which has a bandwidth of several GB per second. Saving time at this stage can be crucial. 

\begin{figure}[H]
	\centering
	\includegraphics[width=14cm]{report/results/io.PNG}
	\caption{Execution results for I/O }
	\label{iograph}
\end{figure}

When testing I/O operations different sizes of blocks were considered. The same sizes are then used when filtering to compare execution times and calculate computation percentage of the different operations. Figure \ref{iograph} shows a graph of the time for each cube run on different programming platforms. 
