Diagnostyka dołączania języka C++ w programie Visual Studio
Począwszy od programu Visual Studio 17.8, program Visual Studio ułatwia analizowanie plików C++ #include
:
- Wyświetla, jak często i gdzie jest używany element z każdego pliku nagłówka.
- Wyświetla czas kompilacji dla każdego
#include
pliku — co pomaga zidentyfikować możliwości optymalizacji czasu kompilacji.
Włączanie diagnostyki dołączania języka C++ i funkcji CodeLens
Funkcja dołączania diagnostyki języka C++ jest domyślnie wyłączona. Aby ją włączyć, kliknij prawym przyciskiem myszy w edytorze kodu, aby wyświetlić menu kontekstowe, a następnie wybierz pozycję Uwzględnij dyrektywy>Włącz #include diagnostyki.
W menu kontekstowym jest wyróżniona opcja dołączania dyrektyw, która ujawnia dwie opcje: Sortuj dyrektywy dołączania # i włącz # dołącz diagnostykę.
Informacje o #include
plikach są wyświetlane za pośrednictwem funkcji CodeLens, która jest domyślnie wyłączona. Aby włączyć odpowiednie ustawienia funkcji CodeLens, przejdź do pozycji Narzędzia>Opcje>edytora>tekstu Wszystkie języki>CodeLens i upewnij się, że oba odwołania pokaż #include języka C++ i Czas kompilacji Programu C++ są włączone.
Okno opcji jest ustawione na Edytor tekstu > Wszystkie języki > CodeLens. Opcje Pokaż #C++ zawierają odwołania i Pokaż czas kompilacji języka C++ są wyróżnione.
Wyświetlanie #include
odwołań
Aby wypróbować dołączanie diagnostyki, utwórz nowy projekt konsoli języka C++. Zastąp zawartość pliku głównego .cpp
następującym kodem:
#include <iostream>
#include <vector>
// a function that takes a vector of integers and prints them out
void print(std::vector<int> &vec)
{
for (int i : vec)
{
std::cout << i << std::endl;
}
std::cout << std::endl;
}
// a function that takes a vector of integers and adds 10 to each element of the vector and store the result in a new vector
std::vector<int> add10(std::vector<int>& vec)
{
std::vector<int> newVec;
for (int i : vec)
{
newVec.push_back(i + 10);
}
return newVec;
}
int main()
{
std::vector<int> vec = { 7, 5, 16, 8 };
print(vec);
auto newVec = add10(vec);
print(newVec);
}
Po włączeniu diagnostyki dołączania języka C++ kod z pliku nagłówka jest wyświetlany powyżej pliku nagłówka. Wygląda to podobnie do poprzedniego przykładu kodu:
6 references
#include <iostream>
5 references
#include <vector>
W edytorze kodu wybierz 5 odwołań powyżej #include <vector>
i podsumowanie lokalizacji, w których jest wyświetlany kod z <vector>
tego pliku:
Okno kontekstowe Dołączanie diagnostyki języka C++ pokazuje, że w kodzie jest używanych pięć miejsc, w których kod z pliku nagłówka wektora jest używany w bieżącym pliku kodu. Na przykład jest używany dwukrotnie w definicji funkcji add10 jako wartość zwracana i parametr. Jest on używany w wierszu 17 w deklaracji newVec itd.
Wybierz element, aby przejść do jego lokalizacji w kodzie.
Wyświetlanie #include
czasu kompilacji
Aby wyświetlić czas kompilacji dla każdego pliku #include
, najpierw skompiluj przy użyciu funkcji Build Insights.
Włącz pozycję Build Insights (Kompiluj szczegółowe informacje) na pasku menu głównego, wybierając pozycję Build Run Build Insights on Solution Build (Kompiluj>szczegółowe informacje o kompilacji w kompilacji rozwiązania).> Po zakończeniu kompilacji zostanie wyświetlone okno z listą czasów kompilacji dla różnych skompilowanych plików. Wróć do okna kodu źródłowego, a czas kompilacji dla każdego #include
pliku jest wyświetlany w funkcji CodeLens. Wygląda podobnie do następującego:
6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>
Jeśli masz dyrektywę #include
, która jest używana rzadko, ale ma znaczący wpływ na czas kompilacji, to narzędzie może pomóc go zidentyfikować.
W tym artykule pokazano, jak włączyć diagnostykę dołączania języka C++ i funkcję CodeLens oraz jak używać diagnostyki dołączania języka C++, aby przeanalizować, jak często coś z pliku dołączanego jest używane i jak #include
wpływa na czas kompilacji.
Zobacz też
Omówienie oczyszczania dołączania języka C/C++
Uwzględnij komunikaty oczyszczania