microsoft / microsoft/vscode-cpptools

Autocomplete becomes really slow when including third party library

Offen
#5,864 10 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Feature: Configuration investigate: repro Language Service parser performance reliability
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Type: LanguageService

Describe the bug

  • OS and Version: macOS Catalina (10.15.6)
  • VS Code Version: 1.47.3
  • C/C++ Extension Version: 0.29.0
  • Other extensions you installed (and if the issue persists after disabling them): CMake, CMake Tools
  • Does this issue involve using SSH remote to run the extension on a remote machine?: No
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).

I am trying to implement simple demo from https://pytorch.org/cppdocs/frontend.html. The problem occurs when I include #include <torch/torch.h>. The auto complete would not show up for seconds, sometimes it doesn't even show up and I need to force it by pressing ^+Space. I expect to have a cache file generated on the default path to cache the precompiled headers from that library, however I couldn't find it. I also tried to change the cache path, but still no files are generated.

Steps to reproduce

  1. Copy and follow instruction in https://pytorch.org/cppdocs/frontend.html on End-to-end Example section
  2. Include #include <torch/torch.h>
  3. Start typing. In my case even typing struct would not show any the auto complete at all

The following is my settings.json

{
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

I don't use c_cpp_properties.json
And the following is my settings.json when I tried to change the cache path

{
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
    "C_Cpp.intelliSenseCachePath": ".vscode"
}

I only find ipch/<some_hash_id> folder inside .vscode, no files are generated

Expected behavior

Instant suggestion for autocomplete

C/C++: Log Diagnostics
-------- Diagnostics - 7/30/2020, 9:06:27 PM
Version: 0.29.0
Current Configuration:
{
    "name": "Mac",
    "includePath": [
        "${workspaceFolder}/**"
    ],
    "defines": [],
    "macFrameworkPath": [],
    "compilerPath": "/usr/local/bin/gcc-10",
    "cStandard": "c11",
    "cppStandard": "gnu++14",
    "intelliSenseMode": "clang-x64",
    "compilerArgs": [],
    "configurationProvider": "ms-vscode.cmake-tools",
    "browse": {
        "path": [
            "${workspaceFolder}/**"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Custom browse configuration: 
{
    "browsePath": [
        "/volumes/workspace/learning/torchcpp/build/cmakefiles",
        "/volumes/workspace/learning/torchcpp/third_party/libtorch/include",
        "/volumes/workspace/learning/torchcpp/third_party/libtorch/include/torch/csrc/api/include",
        "/volumes/workspace/learning/torchcpp"
    ],
    "standard": "gnu++14",
    "compilerPath": "/usr/bin/clang++",
    "compilerArgs": [
        "-g",
        "-isysroot",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk",
        "-std=c++14",
        "-std=gnu++14"
    ]
}
Custom configurations:
[ /Volumes/Workspace/learning/torchcpp/main.cpp ]
{
    "defines": [],
    "standard": "gnu++14",
    "includePath": [
        "/volumes/workspace/learning/torchcpp/third_party/libtorch/include",
        "/volumes/workspace/learning/torchcpp/third_party/libtorch/include/torch/csrc/api/include"
    ],
    "intelliSenseMode": "clang-x64",
    "compilerPath": "/usr/bin/clang++",
    "compilerArgs": [
        "-g",
        "-isysroot",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk",
        "-std=c++14",
        "-std=gnu++14"
    ]
}
Translation Unit Mappings:
[ /Volumes/Workspace/learning/torchcpp/main.cpp ]:
    /Volumes/Workspace/learning/torchcpp/main.cpp
Translation Unit Configurations:
[ /Volumes/Workspace/learning/torchcpp/main.cpp ]:
    Process ID: 32992
    Memory Usage: 113 MB
    Compiler Path: /usr/bin/clang++
    Includes:
        /Volumes/Workspace/learning/torchcpp/third_party/libtorch/include
        /Volumes/Workspace/learning/torchcpp/third_party/libtorch/include/torch/csrc/api/include
        /Library/Developer/CommandLineTools/usr/include/c++/v1
        /Library/Developer/CommandLineTools/usr/lib/clang/11.0.3/include
        /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
        /Library/Developer/CommandLineTools/usr/include
    Frameworks:
        /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks
    Standard Version: c++14
    IntelliSense Mode: clang-x64
    Other Flags:
        --clang
        --clang_version=110003
Total Memory Usage: 113 MB
Language Server Logs
textDocument/didChange: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/textEditorSelectionChange
textDocument/didChange: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/textEditorSelectionChange
textDocument/didChange: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/textEditorSelectionChange
textDocument/didChange: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/textEditorSelectionChange
cpptools/getFoldingRanges: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 553)
textDocument/didChange: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/abortRequest
cpptools/textEditorSelectionChange
textDocument/documentHighlight: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 554)
sending 1 changes to server
sending 1 changes to server
sending 1 changes to server
sending 1 changes to server
sending 1 changes to server
cpptools/finishUpdateSquiggles
Error squiggle count: 9
Update IntelliSense time (sec): 3.702
cpptools/getFoldingRanges: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 555)
textDocument/completion: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 556)
auto_complete::handle_completion: file:///Volumes/Workspace/learning/torchcpp/main.cpp (47:7)
Offering completion
cpptools/getCodeActions: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 557)
cpptools/getSemanticTokens: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 558)
cpptools/getCodeActions: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 559)
textDocument/didSave: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/fileChanged: file:///Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/getDocumentSymbols: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 560)
cpptools/getDocumentSymbols
  tag parsing file: /Volumes/Workspace/learning/torchcpp/main.cpp
completionItem/resolve (id: 561)
idle loop: reparsing the active document
Checking for syntax errors: file:///Volumes/Workspace/learning/torchcpp/main.cpp
Queueing IntelliSense update for files in translation unit of: /Volumes/Workspace/learning/torchcpp/main.cpp
cpptools/finishUpdateSquiggles
Error squiggle count: 10
Update IntelliSense time (sec): 0.26
cpptools/getSemanticTokens: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 562)
cpptools/getCodeActions: file:///Volumes/Workspace/learning/torchcpp/main.cpp (id: 563)
Database safe to open

Screenshots

Additional context

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere die Verzögerung mit dem PyTorch-libtorch-Include und der gezeigten CMake Tools-Konfiguration. Beginne bei den Einträgen language-server textDocument/completion und auto_complete::handle_completion und untersuche anschließend das Timing der IntelliSense-Aktualisierung in den bereitgestellten Logs. Als abgeschlossen gilt die Aufgabe, wenn die Autovervollständigung beim Bearbeiten des Beispiels umgehend erscheint.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, typescript
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.