У меня есть вопрос о производительности разбора при использовании clang (libclang) и конкретной функции clang_parseTranslationUnit и clang_reparseTranslationUnit.
Я пытаюсь оптимизировать процесс, но у меня уже нет идей.
Ситуация следующая - у меня есть источник .cpp, который включает в себя много заголовочных файлов. Эти заголовки меняются очень редко. Однако исходный код .cpp сильно меняется, и мне нужно часто его анализировать.
Таким образом, есть возможность «подготовить / прекомпилировать» все заголовки и создать файл .pch, а затем использовать его при разборе .cpp.
Однако проблема в том, что я могу использовать только один .pch.
Итак, мне нужно создать .pch из всех включенных заголовков.
Однако позже, когда я включаю какой-нибудь другой файл заголовка, мне нужно повторно проанализировать все заголовки, даже если они не изменились вообще.
Кроме того, это проблема, в которой я должен четко знать, какие заголовки включены в .cpp (это не очень удобно, так как это означало бы, что я должен хотя бы самостоятельно сканировать включения, а затем создать .pch, а затем используйте его при разборе источника .cpp).
Есть ли другой способ оптимизировать процесс? Я надеялся, что, когда я использую clang_parseTranslationUnit и позже clang_reparseTranslationUnit, синтаксический анализ будет оптимизирован таким образом на самом деле (по крайней мере, все заголовки, которые не были изменены, не нужно повторно анализировать). Но это так не работает.