How do you profile and optimize a memory-intensive C++ application for performance-critical autonomy software?