2012-02-21 3 views
3

У меня есть файл C++, который изменяет и сохраняет все файлы заголовков, остается неизменным. Но всякий раз, когда я повторно разбираю блок перевода, libclang заканчивается тем, что он потребляет много процессоров и батов. Хотя он использует предварительно скомпилированный заголовок и все (я могу видеть файлы преамбулы, сгенерированные), но все же он требует довольно много ресурсов, а также времени.libclang slow reparsing единицы перевода

Вот фрагмент моего кода.

translation_unit_ = clang_parseTranslationUnit(index_, 0, clang_argv[0], 
    clang_argv.size() - 1, 0, 0, 
    clang_defaultEditingTranslationUnitOptions()); 
// File name is in the arguments. 


// Here I reparse again every time file changes. 
clang_reparseTranslationUnit(translation_unit_, 0, 0, 
    clang_defaultReparseOptions(translation_unit_)); 

// This is how I get diagnositics 
CXDiagnostic diag = clang_getDiagnostic(translation_unit_, i); 

Может ли кто-нибудь предложить мне правильную настройку для поиска ошибок компиляции в одном изменении исходного файла?

+0

Ваша цель - просто найти ошибки компиляции. Или вы также хотите получить высококачественный оптимизированный и минимизированный вывод кода? – sarnold

+0

Просто чтобы найти ошибки компиляции и доработать код! – abhanshu

ответ

1

Вы используете clang_defaultEditingTranslationUnitOptions() в начальной индексации и clang_defaultReparseOptions() позже. Попробуйте использовать clang_defaultEditingTranslationUnitOptions() в обоих местах.

Кроме того, не ожидайте, что переназначение источника будет очень быстрым - перепроверяйте каждое изменение будет привести к плохой производительности в любом нетривиальном исходном файле. Можете ли вы подождать несколько миллисекунд после последнего изменения, чтобы увидеть, можете ли вы накапливать несколько изменений в один повтор?

Смежные вопросы