Стоит ли рассматривать VTune для Delphi?

Просматривая все вопросы об инструментах профилирования, я с удивлением обнаружил VTune от Intel о котором я раньше не слышал. При цене 700 долларов это даже дороже, чем AQTime.

Но прежде чем я приму решение выложить большие деньги за AQTime, нужно ли знать, использовал ли кто-нибудь VTune для Delphi, и если да, как вы думаете, есть ли у него какие-либо преимущества, которые могут сделать его лучшим выбором, чем AQTime и других инструментов профилирования для Delphi, которые существуют?


person lkessler    schedule 21.12.2009    source источник
comment
Вы много вручную настраиваете ассемблер SSE?   -  person Marco van de Voort    schedule 21.12.2009
comment
Нет, но я смотрю на это и имею большой опыт низкоуровневой оптимизации.   -  person lkessler    schedule 21.12.2009


Ответы (3)


Вы можете скачать 30-дневную пробную версию vtune и попробовать ее самостоятельно.

Я использовал AQTime и VTune.

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

Отличие Secend в том, что VTune - это профилировщик образцов, а AQTime - профилировщик инструментов. У обоих есть свои сильные и слабые стороны, но лично я предпочитаю инструментальный. С помощью инструментального профилировщика вы получаете точную информацию о том, сколько раз была вызвана ваша функция, все вызывающие этой процедуры и т. Д., Со стоимостью неточных результатов времени - инструментальные профилировщики изменяют способ выполнения кода процессором, поэтому прогнозы ветвлений и кеш работают иначе, чем в реальном и протестированном приложении работать медленно.

Но самое главное - это графический интерфейс, и здесь выигрывает AQTime. Это мощное приложение, но очень простое в использовании. VTune совсем другой. Я потерял слишком много времени, чтобы найти нужную команду в VTune. GUI очень запутанный.

Так что кроме многопоточности я использую AQTime.

person Macedonczyk    schedule 21.12.2009
comment
Я считаю, что AQTime предлагает как инструменты, так и сэмплы. Что я хотел бы проверить в VTune, так это его поддержка формата вывода отладки Borland TD32. - person Warren P; 21.12.2009
comment
Согласно PDF-файлам, VTUNE имеет НУЛЕВУЮ поддержку формата отладки TD32. Так может ли VTune даже предоставить вам стек вызовов с информацией о номерах строк для исполняемого файла delphi? В них напрямую упоминаются C #, C / C ++ и Visual Basic, но нет упоминания о delphi или чем-либо еще. - person Warren P; 21.12.2009
comment
Уоррен: Согласно этому: software.intel.com/en-us/articles/ VTune ДЕЙСТВИТЕЛЬНО поддерживает TD32. - person lkessler; 21.12.2009
comment
@Warren P. В AQTime нет профилировщика выборки. Только приборы. А с AQTime 8 пробный период составляет всего 14 дней с очень ограниченной функциональностью. - person Max; 30.03.2013
comment
Я попробовал Intel VTune 2017, но, к сожалению, нет поддержки отладочной информации Delphi. - person Ville Krumlinde; 21.02.2017

VTune может считывать низкоуровневые счетчики ЦП, такие как прогнозирование ветвлений, промахи кеша и т. Д. Я использовал его, чтобы выяснить, почему TopMM (многопоточный диспетчер масштабируемой памяти!) Очень медленно работает на моем гиперпоточном ЦП. Было что-то насчет псевдонимов кеша памяти 64kb. Таким образом, он дает более подробную информацию о том, как он действительно работает на ЦП, и почему что-то работает медленно из-за промахов кеша и т. Д. Для реальной оптимизации (последний%) я бы использовал оба, для нормальной оптимизации используйте AQ или другое (например, мой asmprofiler :-))

person André    schedule 21.12.2009
comment
Андре: Если бы вы могли просто добавить информацию на уровне строки в asmprofiler, это было бы все, что мне нужно. - person lkessler; 21.12.2009

Прошло более 10 лет с тех пор, как этот вопрос был задан. К сожалению, пока вроде ничего не изменилось.

Я успешно использовал VTune Amplifier с двоичными файлами Delphi более пары раз за многие годы. Это выполнимо, но на это уходит много времени. В какой-то момент у нас была лицензия на AQTime, но она мне не очень понравилась. Замедление выполнения было слишком большим для большого проекта, и я не мог привыкнуть к тому, как были представлены результаты.

Последние версии VTune Amplifier выглядят намного чище, но работают примерно так же. Большую часть времени вы будете смотреть в правый столбец с адресами памяти стека вызовов. Что вы хотите сделать, так это сопоставить эти адреса с адресами в файле карты, который генерирует Delphi (если вы включите эту опцию). Небольшая оговорка: адреса в стеке вызовов внутри VTune Amplifier и в файле карты смещены по начальному адресу секции кода. Значение по умолчанию - 0x401000 (вы можете найти его в начале файла карты). Следовательно, вам нужно будет искать в файле карты адрес в стеке вызовов за вычетом смещения. Более того, довольно часто адрес имеет дополнительное смещение в несколько байтов. Вместо поиска точного (смещения) адреса, ищите окрестности адреса, а затем проверьте, к какой строке принадлежит точный адрес. Также иногда бывает, что некоторые адреса не указывают на нужное место. Просто проигнорируйте этот адрес и перейдите к следующему в стеке вызовов.

Преобразование файла карты (или эквивалентного двоичного файла Delphi) в файл pdb потенциально может значительно упростить задачу. Мне не удалось найти современный инструмент для выполнения этой работы, но я нашел описание формата файла pdb в InformIt (Cracking PDB Symbol Files by Sven B. Schreiber).

Промежуточное решение могло бы заключаться в ускорении текущего процесса с помощью инструмента, который считывает файл карты и позволяет быстро искать адрес (включая корректировку смещения и использование поиска по окрестностям). Еще лучше, если он позволяет вам перейти к исходному файлу и отобразить недавно сопоставленные адреса.

Конечно, лучшим решением для Embarcadero было бы добавление поддержки для генерации файлов PDB в свой компилятор, но мой опыт работы с ними показывает, что они просто копят ошибки и запросы функций и редко когда-либо что-то с ними делают. Мы сами по себе в этом вопросе.

Интересно, что Примож Габриелчич упоминает усилитель Intel VTune по крайней мере в двух книгах, связанных с Delphi. Освоение программирования на Delphi (2019) упоминает его вместе с несколькими другими программами, но это та, для которой не отображается дополнительная информация. Было бы интересно узнать, действительно ли автор использовал VTune Amplifier с двоичными файлами Delphi, и как он это делает.

person Paul    schedule 06.03.2020
comment
Теперь есть хороший инструмент MAP2PDB от Андерса Меландера, который позволяет сгенерировать файл PDB из вывода Delphi MAP: en.delphipraxis.net/topic/4853-map2pdb-profiling-with-vtune - person landgraf.dev; 05.04.2021
comment
@ landgraf.dev Замечательные новости! Спасибо, что поделились ссылкой! Я вижу, что люди уже успешно используют его с VTune, и за последние несколько часов этот инструмент был улучшен. К сожалению, VTune, похоже, испытывает проблемы с загрузкой больших (более 16 МБ) файлов PDB с текущей версией. - person Paul; 06.04.2021
comment
Я считаю, что лимит 16 МБ + уже был установлен. Если нет, то, вероятно, будет в ближайшее время, Андерс, похоже, усердно над этим работает. - person landgraf.dev; 07.04.2021