Is your Python, R or C/C++ code too slow or does it require a lot of memory?
We can assist you in profiling your code, identifying the the pain points, and assessing the feasibility of techniques to reduce the runtime and/or the memory footprint.
Example of techniques used to reduce the runtime:
- Memoization, i.e., storing the result of expensive function calls
- Reduction of the memory swapping
- Usage of better data structures (e.g., lists, sets, hash tables)
- Usage of performant libraries (e.g., OpenMP, Cython, Numba, NumPy, Pandas, dplyr)
- Parallel, distributed, and GPU computing (e.g., MPI, IPython Parallel, Dask) on the desired infrastructure, for example ScienceCloud or ScienceCluster
- Functional and domain decomposition
Examples of techniques used to reduce the memory footprint:
- Usage of better data structures (e.g., lists, sets, hash tables)
- Out of memory processing combined with specialized file formats (e.g., memory mapped files, HDF5, SQLite)
- Lazy evaluation and data batch processing
- Distributed computing (e.g., MPI, IPython Parallel, Dask)