Runtime of orekit software

Dear Orekit Community,

I’ve recently developed a Python code leveraging the Orekit wrapper, enhanced with additional functionalities, for orbit determination. However, during testing on certain datasets, I noticed significant sluggishness in its performance.

I’m dealing with low orbits and aiming to optimize the runtime for such scenarios. If datasets are the primary factor influencing runtime, I’m particularly interested in understanding the ideal setup for data parameters, such as the fitspan of GPS data or the number of data points being fed in.

I’m curious about common standards or benchmarks for runtime in Orekit-based software, especially when working with low orbits. Essentially, I’m wondering if there are typical expectations regarding runtime. While I understand that actual runtime can vary based on factors such as dataset size and fit span, having a rough example or guideline would be immensely helpful for comparison.

Looking forward to your insights and suggestions.

Best regards,
SeongHo Park

Hi SeongHo Park,

It is an interesting area, I did some early tests on this in the past but it is hard to make comparisons (at least what I found) as computer platforms change etc.

But in general, you will have penalties in performance in the transition of data between the Python wrapper and the java kernel, as there are no cross language optimizations. The more frequent calls, such as using own event detectors or stephandlers, the more this will be visible. For a propagation that is fully done on the java side this is neglectable.

There are also settings for memory allocation for the java vm, where you in InitVM() can pass additional parameters to the vm, see JCC toolkit documentation. I have not needed to tune these but if you run large simulations it may be something to look into.

Do you know more which part of your software that takes time?