If you struggle to deliver your software due to performance problems, or your team occasionally needs a performance engineer, this is the right place to be! We offer consulting services in the domain of C and C++ application development. Use the contact form to contact us. We will answer as fast as possible.
Fast help with performance issues
Your software is slow and you need fast help to make it run at an acceptable speed? We offer consulting services, where we inspect the source code you provide to find performance problems and help you fix them, quickly and reliably. This can save you months of engineering time or project cancelation. We have experience in performance optimizations in the domains of High-Performance development, application development, and embedded development in C and C++.
Not sure if we can help you? Brainstorming sessions where we talk about your problems and brainstorm possible solutions are free and non-binding. We use them to understand our customers’ problems and figure out if we can help. Many times a good idea comes up during the sessions, and no further action is required.
To contact us, use the contact form.
How does consulting work?
The consulting services are typically short in duration (2-10 workdays) and work like this:
- Before starting, you will need to create build instructions, run instructions and a repro that reproduces easily the problem you are facing. You also want to create some way of verifying that the modified code doesn’t introduce bugs or unacceptible imprecisions.
- Ideally, you want to build the problematic code under Linux for X86-64 architecture, since most debugging tools are available for this environment. However, we accomodate other operating systems (notabily Windows and Android) and other architectures (notabily ARM).
- We take your program and analyze it. The analysis typically takes one to two days, where we try to establish what is the problem and what are the possible ways of fixing it. Sometimes, we fix issues during the analysis phase. Other times, in the analysis phase we determine that the problem is already optimized enough and that additional effors would probably not yield improvements.
- After the analysis phase, we move on to debugging phase. The client doesn’t have to continue with the debugging phase if they don’t wish to.
- In the debugging phase we try out several different solutions to the problem. We use tools like debuggers, regular profilers, hardware profilers, data analysis tools, etc. to understand what could be the problem and what is the best solution.
- The debugging phase takes longer, but usually it is done within 3 to 7 working days.
- As the output of the debugging phase, you get a prototype of a program that is faster than the original. The amount of speedup is very dependent on the problem; some problems can be made order of the magniture faster, others 2-3 times faster. Some problems are difficult to optimize and the gains can be low (e.g. 1.2 faster).
In case you have questions related to performance and you wish to talk to an expert, we offer that as well. For example, if you are designing a performance-critical piece of code and you need somebody to do the code review with special emphasis on reviewing performance. We charge by the hour, our prices are available on demand.
For those teams where performance is important we offer training sessions, both on-site and online. The object of the training is to teach developers techniques for writing fast code and debugging performance problems. The courses are tailored to the team’s needs. For example, a team that works in the telecommunication domain will get training that focuses on vectorization and techniques to extract the maximum performance from the compiler. Another team that does development for financial software will be trained to write efficient C++ code.