| C vs Perl | Perl vs Python | POGL vs SDL | Windows vs Linux |
These benchmarks were adopted from Geoff Broadwell's SDL Trislam benchmarks, and ported to POGL
by Bob Free.
These benchmarks were performed on an Debian Ubuntu/Dapper system:
3Ghz Intel Pentium D
nVidia GeForce 6800 GT/AGP/SSE2
nVidia v97.55 driver
These benchmarks require an OpenGL installation, GLUT, Perl and the Time::HiRes module.
The POGL benchmarks require POGL 0.55_1 or newer;
the SDL benchmarks require the SDL::OpenGL module.
GL_TRIANGLES, GL_QUADS, tristrips and quadstrips provided comparable performance
Vertex Array triangles were 5% faster via POGL than SDL::OpenGL
Vertex Array quads were 7% faster via POGL than SDL::OpenGL
POGL OGA arrays were 64% faster than SDL::OpenGL Vertex Arrays
POGL VBOs were over 2x faster than SDL::OpenGL Vertex Arrays
SDL::OpenGL did not support VBOs at the time of this benchmark.
SDL's primary focus is to provide a comprehensive collection of tools for imaging,
audio and video; OpenGL is provided as a convenience, but not central to its core
POGL focuses solely on OpenGL, and is able to tune its APIs for the best
possible OpenGL performance in a Perl environment. Innovations such as
POGL's OpenGL::Array objects provide significant advantage (in performance and ease of use)
over SDL::OpenGL's packed string APIs.
This focus also allows POGL to stay ahead of other Perl bindings in terms of
support for OpenGL extensions, like VBOs, FBOs and Vertex/Fragment Programs.
By using POGL with SDL, developers are able to combine the best of both worlds:
comprehensive media APIs, plus a high-performance OpenGL interface.
POGL's OpenGL::Array (OGA) object provides a number of conveniences over SDL::OPenGL:
Trislam: POGL w/ OGA
Easier to use than packing vertices into strings
OGAs are stored as typed C arrays; no conversion/copy/casting when passed as parameters
OGAs support GPU buffer binding, simplifying VBO handling
OGAs provide an efficient means to manage and transform arrays in Perl
Much thanks to Geoffrey Broadwell for assistance with his Trislam benchmark,
and for identifying/fixing a bug in POGL's gl_pixelbuffer_size API.
This benchmark source is available on this site