Структуры данных, насколько это возможно, должны использоваться повторно. Например, если код часто создает новые матрицы или векторы, существует и способ повторного использования некоторых из них. Очень существенный выигрыш в производительности можно получить повторным использованием структур данных матриц с одинаковыми ненулевыми шаблонами. Если код создает тысячи объектов матриц или векторов, производительность будет падать. Например, при решении нелинейной задачи или повременном интегрировании повторное использование матриц и их ненулевой структуры для многих этапов может существенно ускорить программу.
Простой техникой для сохранения рабочих векторов, матриц и т.д. является
введение пользовательских контекстов. В языках C и C++ такой контекст
представляет собой структуру, в которой содержатся различные объекты;
в Фортране пользовательский контекст может быть массивом целых чисел,
содержащим параметры и указатели на объекты PETSc
(См. ${PETSC_DIR}/snes/examples/
tutorials/ex5.c и ${PETSC_DIR}/snes/examples/tutorials/ex5f.F
с примерами пользовательских контекстов приложения на языках C и Фортран,
соответственно).