Code Optimization and Parallelization
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 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:
- Memorization, 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)
How to initiate an expert service
- Get in contact with Science IT and explain briefly what type of service you are interested in together with a short description of your use case and needs. contact Science IT
- Based on the information you provided, your request will be routed to a suitable expert, who gets in contact with you to follow up on the remaining steps.
Terms and conditions
- Efforts-based costs
- Expert services are restricted to UZH researchers and groups.
- More details (incl. costs and agreement templates) are available in the UZH Intranet.