gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/doc/gsl-shell-index/benchmarks.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gsl-shell-index/benchmarks.rst')
-rw-r--r--doc/gsl-shell-index/benchmarks.rst 55
1 files changed, 55 insertions, 0 deletions
diff --git a/doc/gsl-shell-index/benchmarks.rst b/doc/gsl-shell-index/benchmarks.rst
new file mode 100644
index 00000000..76374332
--- /dev/null
+++ b/doc/gsl-shell-index/benchmarks.rst
@@ -0,0 +1,55 @@
+
+.. _benchmarks:
+
+Benchmarks
+==========
+
+The performance of the algorithms implemented in GSL Shell have been tested agaist an equivalent C implementation.
+
+The purpose of the benchmarks is twofold. One of the objectives is to test the correctness of the results against the native GSL implementation while the other is to compare C and Lua implementation in term of performance.
+
+The performance is measured simply in term of time of execution, no attemt has been done to add other factors like memory utilisation or others.
+
+Besides the benchmark of optimized C code the LuaJIT2 implementation was tested with and without the JIT support enabled.
+When the JIT support is disabled (option ``-joff``) the algorithm is executed in purely interpreted mode.
+This latter result is reported to give an idea of the improvement given by the JIT compiler.
+
+Results
+-------
+
+We present here the results of the benchmark in term of execution time.
+The time is normalized taking the ratio with the 'LuaJIT2' results.
+The ratio obtained is therefore plotted in logarithmic scale.
+
+.. figure:: gsl-shell-benchmark.png
+
+A few remarks about these results.
+
+Only a very few ODE algorithms are currently implemented in GSL Shell and these use an interface different of those used in the GSL library.
+In GSL Shell the variables of the ode system are not packed into an array but are passed like function arguments.
+One implication is that only ODE system with a small number of variables can be integrated.
+This difference can affect the execution speed and should be kept in mind.
+
+Otherwise there is nothing that prevents the implementation in GSL Shell of an ODE integrator in array form.
+This is actually planned to be done in the near future.
+
+For all the other algorithms the GSL implementation closely mirror the GSL interface and the comparaison is aboslutely fair.
+
+
+Technical details
+-----------------
+
+The C and Lua version of the benchmark was written to solve exactly the same problem with the same input values and the same algorithm parameters.
+
+The C version of the benchmark was compiled using the following compiler flags: ``-O2 -fomit-frame-pointer``.
+The GSL library itself was compiled with the same options and the executable was created by linking to the GSL shared library.
+
+While some tweak of the compiler options are possible to improve performance of GSL C code no attempt was done in this direction.
+The idea was that we want to compare the Lua implementation with a C executable compiled with standard optimizing options and in accord to common practices.
+
+Benchmark availability
+----------------------
+
+The source code of all the benchmark is available with the GSL Shell source code inside the 'benchmarks' folder.
+
+We encourage all the interested users to reproduce the benchmarks results by themselves.
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月18日 03:30:52 +0000

AltStyle によって変換されたページ (->オリジナル) /