Another tikz version with background. Speed concerns are taken over by the use of boxes.
\documentclass[a4paper]{article}
\usepackage{background}
\usetikzlibrary{decorations.markings,calc}
\def\Step{0.5} %% separation between dots
\def\Size{1.5pt} %% radius of the dot
\def\Toty{60} %% adjust
\def\Totx{50} %% adjust
\newsavebox{\mybox}
\sbox{\mybox}{%
\begin{tikzpicture}[remember picture]
\foreach \y in {1,2,...,\Toty}{
\foreach \x in {1,2,...,\Totx}
\draw[fill=black,opacity=0.3,shift={(\Step*\x cm,\Step*\y cm)}] (0,) circle[radius=\Size];
}%
\end{tikzpicture}
}%
\backgroundsetup{
scale=1,
angle=0,
position={current page.center},
contents={%
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.center) {\usebox\mybox};
\end{tikzpicture}%
}%
}%
\begin{document}
\mbox{}
\clearpage
\mbox{}
\end{document}

This is bit slower than earlier and using decorations:
\documentclass[a4paper]{article}
\usepackage{background}
\usetikzlibrary{decorations.markings,calc}
\def\Step{0.02} %% vertical separation between dots
\def\Size{1pt} %% radius of the dot
\def\Toty{50} %% inverse of \Step i.e., 1/\Step
\tikzset{
decoration={%
markings,
mark=between positions \Step and 1 step \Step with {
\draw[fill=black,opacity=0.3] (0,0) circle[radius=\Size];
},
}
}
\newsavebox{\mybox}
\sbox{\mybox}{%
\begin{tikzpicture}[remember picture]
\foreach \y in {1,2,...,\Toty}{
\path[decorate] ($(current page.north west)!\y*\Step!(current page.south west)$) -- ($(current page.north east)!\y*\Step!(current page.south east)$);
}%
\end{tikzpicture}
}%
\backgroundsetup{
scale=1,
angle=0,
position={current page.north west},
contents={%
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.center) {\usebox\mybox};
\end{tikzpicture}%
}%
}%
\begin{document}
\mbox{}
\clearpage
\mbox{}
\end{document}
graphpappackage) that would greatly increase the speed and likelihood that you'll get a satisfactory answer. Also, welcome to TeX.SX!:)– Adam Liter Feb 25 '14 at 23:32