Подтвердить что ты не робот

Производительность завершения кода Delphi

У меня есть несколько больших (~ 600 тыс. строк кода) проектов Delphi. Они включают некоторые пользовательские компоненты, разработанные нашей командой.

Часто, когда я вызываю завершение кода с помощью ctrl + space или просто нажимая ".", среда IDE блокируется и долго думает. Иногда задержка может быть полной минутой или более. В других случаях он сразу же появляется с предложениями.

Какие факторы влияют на производительность intellisense в Delphi? Можно ли улучшить эту производительность?

Мое лучшее решение до сих пор заключается в отключении автоматического завершения и использовании ctrl + space, когда мне нужно медитировать спокойно в течение минуты или около того.

Я не могу не упомянуть, что VS2005, VS2008 и XCode все, кажется, дают практически мгновенную обратную связь с intellisense (хотя я никогда не пробовал это в проекте, это большое).

В качестве альтернативы Я предложил это предложение.

4b9b3361

Ответ 1

Обязательно укажите все единицы (*), используемые вашим проектом в dpr.
Не полагайтесь на путь поиска, чтобы найти единицу, вызванную с другого устройства, добавьте ее в dpr. Dpr будет намного дольше, но все связанные с компиляцией вещи будут быстрее, включая понимание кода.

(*) не единицы установленных компонентов.

Ответ 2

Delphi Code Insight вызывает библиотеку компилятора для выполнения пользовательской компиляции, когда пользователь запрашивает Code Insight (Ctrl + Space, '.' и т.д.). Этот пользовательский компилятор выполняет сборку в блоке и пропускает через codegen, linking и т.д., Пока не достигнет вашего текущего смещения в файловом буфере. Имея это в виду, список модулей, который видит компилятор до того, как он попадет в вашу текущую позицию, будет играть большую роль в определении скорости операции Code Insight. Может быть единица (или несколько единиц), которые вызывают здоровую зависимость файловой системы и т.д. Вполне возможно, что переупорядочение предложения uses, реорганизация предложения uses в нескольких файлах или удаление единиц в предложении uses, t, необходимый для компиляции вашего текущего устройства, может повысить производительность. Кроме того, использование пакетов или сокращение пути поиска вашего устройства может улучшить время ответа CI.

Ответ 3

Я не знаю, какую версию вы используете, но гораздо более быстрое завершение кода - это одна из вещей, которые мне больше всего нравятся в Delphi 2009.

Ответ 4

Это давняя проблема с Delphi, и мне пришлось прибегнуть к отключению автоматического завершения. Поработав так, я был очень доволен этим. Даже если это занимает всего лишь часть секунды, с задержкой IDE моя типизация была смущающей и прервала мой поток. Гораздо приятнее отключить автоматику, ИМО.

Ответ 5

Включите ли вы каталоги источников для ваших пользовательских компонентов вашей команды в путь к библиотеке? Было бы интересно увидеть разницу в скорости, если только файлы DCU компонента находятся в пути к библиотеке, а также там, где есть исходные файлы.

Ответ 6

Я сам столкнулся с этой проблемой, я исправил ее, удалив мертвую сетевую ссылку из моего пути библиотеки среды. Решила мою проблему на 100%.