I have noticed that, by default, libecpint is compiled without any optimisations. What's the rationale behind this choice? In most scientific libraries/software I have used the default behaviour is usually to compile with some (if not maximum) optimisation, especially if, like in this case, the library can be used as a performance-critical kernel.
Since you use cmake you can use a portable solution by letting the user choose the value of the CMAKE_BUILD_TYPE variable, which could be set to Release by default but could be changed to Debug or RelWithDebInfo when debugging. Of course, further options could still be passed with CMAKE_CXX_FLAGS.
Thank you for the suggestion - I'm honestly not sure why it wasn't there already. The default build is now Release with optimizations turned on, and will be added in the linked pull request.
This is an issue created as part of the libecpint's JOSS review.
I have noticed that, by default, libecpint is compiled without any optimisations. What's the rationale behind this choice? In most scientific libraries/software I have used the default behaviour is usually to compile with some (if not maximum) optimisation, especially if, like in this case, the library can be used as a performance-critical kernel.
Since you use cmake you can use a portable solution by letting the user choose the value of the
CMAKE_BUILD_TYPE
variable, which could be set toRelease
by default but could be changed toDebug
orRelWithDebInfo
when debugging. Of course, further options could still be passed withCMAKE_CXX_FLAGS
.