microsoft / microsoft/vscode-cpptools
Autocomplete becomes really slow when including third party library
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6.2k
- Forks
- 1.7k
- Avg merge
- 14h 46m
- Merged PRs (30d)
- 61
Description
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
- Copy and follow instruction in https://pytorch.org/cppdocs/frontend.html on
End-to-end Examplesection - Include
#include <torch/torch.h> - Start typing. In my case even typing
structwould 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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the delay with the PyTorch libtorch include and the shown CMake Tools configuration. Start at the language-server textDocument/completion and auto_complete::handle_completion entries, then inspect the IntelliSense update timing in the supplied logs. Done means autocomplete appears promptly while editing the example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, typescript
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100