Extremely Slow Clang Autocomplete suggestions [VGDB ROS LINUX PCL]

Sysprogs forums Forums VisualGDB Extremely Slow Clang Autocomplete suggestions [VGDB ROS LINUX PCL]

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #9297
    NZNobody
    Participant

    Hello,

    Could you please advise me how to determine why my clang auto complete engine is constantly reparsing 1000’s of files and making autocomplete nearly unusable. I have asked a similar question before, but was unable to get a solution. To describe the scenario:

    Visual Studio 2015, VGDB 5.2 Windows 7, Workstation Laptop (i7-5600, 16GB RAM, 500GB SSD)

    Working in a solution with 9-10 projects, but usually only load 1 or 2 (to attempt to help VGDB). All 10 projects contain roughly max 100 source files, and each are relatively small (I am writing nodes for ROS).

    Because I am deploying to a remote Linux ARM machine with Robot Operating System (ROS) and Point Cloud Library (PCL) my includes are somewhat larger. Roughly 20,000 files totaling ~200 MB. However of that 90% are standard Linux includes. 1k Files are PCL and about 1k are ROS. 10k are Boost libraries. All the includes are cached locally.

    Working on a single project with a single header ( < 80 lines of code) and a single source file (~300 lines) has me waiting 30 seconds often for auto complete. This is ridiculous and I must have configured something wrong.

    If you can tell me what I would need to provide for you to analyse this that would be great. Or if anyone else here works with ROS?
    <h2>Solutions Tried:</h2>

    • Unloading / reloading projects, entire solution.
    • Deleting the .db file from the solution to force a re-scan encase of error. Delete cache folders as well.
    • Enabled Find missing headers, and locate all missing headers.
    • Crying.

    None of these have helped šŸ™

    <hr />

    <h2>Appendix:
    Sample CMAKE file:</h2>
    #Generated by VisualGDB project wizard.
    #Note: VisualGDB will automatically update this file when you add new sources to the project.

    cmake_minimum_required(VERSION 2.7)
    project(rex_interface)

    ## System dependencies are found with CMake's conventions
    find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    tf
    tf2
    tf2_eigen
    geometry_msgs
    message_generation
    )
    # e.g. find_package(Boost REQUIRED COMPONENTS system)
    find_package(PCL REQUIRED)
    find_package(Eigen3 REQUIRED)

    set( LIBS ${LIBS}
    ${catkin_LIBRARIES}
    ${PCL_LIBRARIES}
    ${Eigen3_LIBRARIES}
    )
    include_directories(
    ${PCL_INCLUDE_DIRS}
    ${Eigen3_INCLUDE_DIRS}
    )

    add_service_files(
    FILES
    stepQuery.srv
    )

    generate_messages(
    DEPENDENCIES
    std_msgs
    )

    ## Required for ros + catkin_make
    catkin_package(
    ## INCLUDE_DIRS: uncomment this if you package contains header files
    ## LIBRARIES: libraries you create in this project that dependent projects also need
    ## CATKIN_DEPENDS: catkin_packages dependent projects also need
    ## DEPENDS: system dependencies of this project that dependent projects also need
    DEPENDS pcl
    )

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

    ###########
    ## Build ##
    ###########
    # Add ouputs
    add_executable(rex_interface src/${PROJECT_NAME}_node.cpp src/${PROJECT_NAME}.cpp)
    target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${LIBS})
    add_dependencies(${PROJECT_NAME} ${catkin_EXPORTED_TARGETS})

    #############
    ## Install ##
    #############
    ## Mark executables and/or libraries for installation
    install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}
    ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
    LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
    RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )

    <hr />

    <h2>
    Visual Studio info export:</h2>
    Microsoft Visual Studio Professional 2015
    Version 14.0.25123.00 Update 2
    Microsoft .NET Framework
    Version 4.6.01055

    Installed Version: Professional

    LightSwitch for Visual Studio 2015 00322-40000-00000-AA768
    Microsoft LightSwitch for Visual Studio 2015

    Visual Basic 2015 00322-40000-00000-AA768
    Microsoft Visual Basic 2015

    Visual C# 2015 00322-40000-00000-AA768
    Microsoft Visual C# 2015

    Visual C++ 2015 00322-40000-00000-AA768
    Microsoft Visual C++ 2015

    Application Insights Tools for Visual Studio Package 1.0
    Application Insights Tools for Visual Studio

    Common Azure Tools 1.7
    Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.

    GitHub.VisualStudio 1.0
    A Visual Studio Extension that brings the GitHub Flow into Visual Studio.

    Microsoft Azure Mobile Services Tools 1.4
    Microsoft Azure Mobile Services Tools

    NuGet Package Manager 3.4.4
    NuGet Package Manager in Visual Studio. For more information about NuGet, visit http://docs.nuget.org/.

    PreEmptive Analytics Visualizer 1.2
    Microsoft Visual Studio extension to visualize aggregated summaries from the PreEmptive Analytics product.

    SQL Server Data Tools 14.0.60311.1
    Microsoft SQL Server Data Tools

    TypeScript 1.8.31.0
    TypeScript tools for Visual Studio

    VisualGDB 5.2
    Allows developing and debugging Embedded, Linux, Android and other GCC/GDB-based applications with Visual Studio.

    <hr />

    <h2>Sample Clang IntelliSense Logs</h2>
    Note that when i switch back from my hpp to my cpp atĀ [+1:32:49.677], it takes nearly 30s to reparse the file. This happens nearly EVERYTIME I switch document tabs. Full log uploaded HERE.

    [+1:32:19.473] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:19.474] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+1:32:19.474] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+1:32:19.475] Starting operation: Parse - Check
    [+1:32:19.475] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:19.635] Previously missing tf is still missing
    [+1:32:19.636] Previously missing gnu/stubs-soft.h is still missing
    [+1:32:19.636] Saved data for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp is up to date.
    [+1:32:19.636] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+1:32:19.636] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+1:32:19.636] Starting operation: Exporting parse results
    [+1:32:19.827] Operation completed: Exporting parse results [190 msec]
    [+1:32:19.827] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 1 error records
    [+1:32:19.914] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [439 msec]
    [+1:32:19.914] Operation completed: Parse - Check [439 msec]
    [+1:32:19.914] Starting operation: Parse - Check
    [+1:32:19.914] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:19.954] Starting operation: Parse - HighlightBraces
    [+1:32:19.955] Operation completed: Parse - HighlightBraces [0 msec]
    [+1:32:20.073] Previously missing tf is still missing
    [+1:32:20.073] Previously missing gnu/stubs-soft.h is still missing
    [+1:32:20.074] Post-PSF state of is outdated. The file will be reparsed.
    [+1:32:20.090] c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp has changed since last build. Doing full analysis...
    [+1:32:20.243] Previously missing tf is still missing
    [+1:32:20.244] Previously missing gnu/stubs-soft.h is still missing
    [+1:32:20.244] No changed PSFs found, but c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp is outdated due to itself. Doing a quick PSF-based rebuild with 1 PSFs.
    [+1:32:20.244] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:23.781] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:27.474] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:27.602] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+1:32:27.602] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+1:32:27.603] Starting operation: Exporting parse results
    [+1:32:27.602] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+1:32:27.758] Operation completed: Exporting parse results [155 msec]
    [+1:32:27.758] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 1 error records
    [+1:32:27.834] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [7919 msec]
    [+1:32:27.839] Operation completed: Parse - Check [7925 msec]
    [+1:32:27.873] Starting operation: Parse - HighlightBraces
    [+1:32:27.873] Operation completed: Parse - HighlightBraces [0 msec]
    [+1:32:49.677] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+1:32:49.678] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+1:32:49.678] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+1:32:49.679] Starting operation: Parse - Check
    [+1:32:49.679] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+1:32:49.791] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+1:32:49.807] c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp has not changed since last build. Doing a quick recheck...
    [+1:32:49.913] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+1:32:49.928] Rebuilding PSF 0 (normal preamble)...
    [+1:32:49.928] Starting fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:10.080] Completed fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:10.081] Successfully rebuilt PSF 0 (normal preamble)...
    [+1:33:10.081] Saving PSF 0 (normal preamble) to C:\Users\manu.lange\Source\ROS_Projects\CodeDB\rex_interface-Release-Win32\rex_interface.npd...
    [+1:33:10.081] Starting fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:10.130] Completed fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:10.130] Successfully saved PSF 0 (normal preamble)...
    [+1:33:10.130] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:13.974] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:18.042] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:18.169] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:18.170] Starting operation: Exporting parse results
    [+1:33:18.170] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+1:33:18.170] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+1:33:18.329] Operation completed: Exporting parse results [159 msec]
    [+1:33:18.329] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp: 49 error records
    [+1:33:18.406] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp [28727 msec]
    [+1:33:18.413] Operation completed: Parse - Check [28733 msec]
    [+1:33:18.413] Starting operation: Parse - Check
    [+1:33:18.413] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+1:33:18.554] Starting operation: Parse - HighlightBraces
    [+1:33:18.555] Operation completed: Parse - HighlightBraces [0 msec]
    [+1:33:18.600] Previously missing tf is still missing
    [+1:33:18.601] Previously missing gnu/stubs-soft.h is still missing
    [+1:33:18.601] Post-PSF state of is outdated. The file will be reparsed.
    [+1:33:18.617] c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp has changed since last build. Doing full analysis...
    [+1:33:18.782] Previously missing tf is still missing
    [+1:33:18.782] Previously missing gnu/stubs-soft.h is still missing
    [+1:33:18.783] No changed PSFs found, but c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp is outdated due to itself. Doing a quick PSF-based rebuild with 1 PSFs.
    [+1:33:18.783] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:22.616] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:26.206] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:26.333] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+1:33:26.333] Starting operation: Exporting parse results
    [+1:33:26.333] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+1:33:26.333] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+1:33:26.492] Operation completed: Exporting parse results [159 msec]
    [+1:33:26.492] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp: 49 error records
    [+1:33:26.570] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp [8157 msec]
    [+1:33:26.575] Operation completed: Parse - Check [8162 msec]
    [+1:33:26.683] Starting operation: Parse - HighlightBraces
    [+1:33:26.683] Operation completed: Parse - HighlightBraces [0 msec]

    • This topic was modified 7 years, 6 months ago by NZNobody.
    #9319
    support
    Keymaster

    Hi,

    Thanks a lot for the log file. Normally VisualGDB optimizes the IntelliSense by pre-compiling a “preamble” – the part of the source file that only contains #include<> statements.

    Looks like you are doing the following:

    1. Editing the main source file
    2. Switching to a header file that is a part of the preamble
    3. Editing the header file
    4. Switching back to the source file

    This causes a full reparse of the main source file that is a very slow operation.

    If you need to do that often, please try rearranging the #include<> statements in your main file as follows:

    #include <rarely modified files>
    static const int unused = 0; //or any other valid C/C++ statement
    #include <frequently modified files>

    This should force VisualGDB to not treat the frequently modified files as a part of the preamble.

    You can double-check what is being reparsed in the Clang IntelliSense Diagnostics Console:

    [+1:32:49.913] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+1:32:49.928] Rebuilding PSF 0 (normal preamble)...

    PSF 0 (normal preamble) refers to the preamble described above (combination of the #include<> statements from the top of the file). Normally VisualGDB should say that PSF (precompiled source fragment) 0 is up-to-date.

    If this helps, please let us know and we will consider adding a mechanism for auto-detecting this and handling it automatically.

    #9347
    NZNobody
    Participant

    Hello,

    Thanks for your suggestions. I have tested them with the following results:

    Inserting the ‘IntelliSense Interupt’ c++ line as suggested does indeed reduce the rebuild time, by changing type.

    PRIOR to inserting the line:

    [+0:18:41.877] Rebuilding PSF 0 (normal preamble)...

    [+0:19:19.786] Operation completed: Parse - Check [38164 msec]

     

    POST inserting the line:

    [+0:15:34.040] Found an outdated PSF 1 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.

    [+0:15:44.604] Operation completed: Parse - Check [10827 msec]

     

    However, there still remains a few key issues.

    1. The 10-11 second update is still performed every time that I save the document. I’m guessing this is unavoidable, even if no contect of the document has changed. It is the case often that I press CTRL-S a lot, just out of habbit. This is quickly a very frustrating habbit with no autocomplete for the next 10-11 seconds.
    2. The update length for just changed the .cpp file (obviously increased). Without the interrupting line, it was only 9.5s, with it was 10.5 (Checked multiple times).
    3. I still get a 30+ second rebuild if I save the .cpp file and switch to the header. This is a little odd, since ‘technically’ the header doesn’t know of the source. It appears to default to:Ā [+0:22:28.903] Rebuilding PSF 0 (normal preamble)…

    Again please find the full log of this session HERE, with the important sections pasted below:

    PreĀ interruptĀ line

    [+0:18:29.827] Starting operation: Parse - Check
    [+0:18:29.831] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:18:30.003] Previously missing gnu/stubs-soft.h is still missing
    [+0:18:30.003] Post-PSF state of is outdated. The file will be reparsed.
    [+0:18:30.018] c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp has changed since last build. Doing full analysis...
    [+0:18:30.175] Previously missing gnu/stubs-soft.h is still missing
    [+0:18:30.175] No changed PSFs found, but c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp is outdated due to itself. Doing a quick PSF-based rebuild with 1 PSFs.
    [+0:18:30.175] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:18:34.426] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:18:38.352] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:18:38.480] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:18:38.480] Starting operation: Exporting parse results
    [+0:18:38.480] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:18:38.480] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:18:38.653] Operation completed: Exporting parse results [172 msec]
    [+0:18:38.653] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 0 error records
    [+0:18:38.740] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [8908 msec]
    [+0:18:38.743] Operation completed: Parse - Check [8915 msec]
    [+0:18:38.766] Starting operation: Parse - HighlightBraces
    [+0:18:38.767] Operation completed: Parse - HighlightBraces [0 msec]
    [+0:18:41.615] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:18:41.615] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+0:18:41.615] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+0:18:41.621] Starting operation: Parse - Check
    [+0:18:41.621] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:18:41.738] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+0:18:41.754] c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp has not changed since last build. Doing a quick recheck...
    [+0:18:41.862] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+0:18:41.877] Rebuilding PSF 0 (normal preamble)...
    [+0:18:41.877] Starting fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:06.653] Completed fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:06.653] Successfully rebuilt PSF 0 (normal preamble)...
    [+0:19:06.653] Saving PSF 0 (normal preamble) to C:\Users\manu.lange\Source\ROS_Projects\CodeDB\rex_interface-Release-Win32\rex_interface.npd...
    [+0:19:06.653] Starting fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:06.702] Completed fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:06.702] Successfully saved PSF 0 (normal preamble)...
    [+0:19:06.702] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:13.669] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:19.290] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:19.448] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:19:19.448] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+0:19:19.448] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+0:19:19.449] Starting operation: Exporting parse results
    [+0:19:19.663] Operation completed: Exporting parse results [214 msec]
    [+0:19:19.663] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp: 0 error records
    [+0:19:19.780] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp [38159 msec]
    [+0:19:19.786] Operation completed: Parse - Check [38164 msec]
    [+0:19:19.867] Starting operation: Parse - HighlightBraces
    [+0:19:19.867] Operation completed: Parse - HighlightBraces [0 msec]

     

    Post:

    [+0:15:18.884] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:18.884] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:15:18.884] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:15:18.890] Starting operation: Parse - Check
    [+0:15:18.890] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:19.086] Previously missing gnu/stubs-soft.h is still missing
    [+0:15:19.086] Saved data for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp is up to date.
    [+0:15:19.086] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:15:19.086] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:15:19.086] Starting operation: Exporting parse results
    [+0:15:19.243] Operation completed: Exporting parse results [157 msec]
    [+0:15:19.243] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 3 error records
    [+0:15:19.324] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [433 msec]
    [+0:15:19.324] Operation completed: Parse - Check [434 msec]
    [+0:15:19.365] Starting operation: Parse - HighlightBraces
    [+0:15:19.365] Operation completed: Parse - HighlightBraces [0 msec]
    [+0:15:21.832] Starting operation: Parse - Check
    [+0:15:21.834] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:22.007] Previously missing gnu/stubs-soft.h is still missing
    [+0:15:22.007] Post-PSF state of is outdated. The file will be reparsed.
    [+0:15:22.023] c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp has changed since last build. Doing full analysis...
    [+0:15:22.176] Previously missing gnu/stubs-soft.h is still missing
    [+0:15:22.176] No changed PSFs found, but c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp is outdated due to itself. Doing a quick PSF-based rebuild with 1 PSFs.
    [+0:15:22.176] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:26.624] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:30.452] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:30.588] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:15:30.588] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:15:30.588] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:15:30.588] Starting operation: Exporting parse results
    [+0:15:30.769] Operation completed: Exporting parse results [180 msec]
    [+0:15:30.769] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 3 error records
    [+0:15:30.936] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [9102 msec]
    [+0:15:30.942] Operation completed: Parse - Check [9109 msec]
    [+0:15:30.976] Starting operation: Parse - HighlightBraces
    [+0:15:30.976] Operation completed: Parse - HighlightBraces [0 msec]
    [+0:15:33.770] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:15:33.771] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+0:15:33.771] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+0:15:33.776] Starting operation: Parse - Check
    [+0:15:33.777] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:15:33.906] Previously missing gnu/stubs-soft.h is still missing
    [+0:15:33.906] Found an outdated PSF 1 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+0:15:33.922] c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp has not changed since last build. Doing a quick recheck...
    [+0:15:34.040] Previously missing gnu/stubs-soft.h is still missing
    [+0:15:34.040] Found an outdated PSF 1 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built.
    [+0:15:34.040] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:15:40.791] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:15:44.201] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:15:44.337] Starting operation: Exporting parse results
    [+0:15:44.337] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:15:44.337] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers...
    [+0:15:44.337] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp.
    [+0:15:44.514] Operation completed: Exporting parse results [176 msec]
    [+0:15:44.514] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp: 0 error records
    [+0:15:44.599] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp [10822 msec]
    [+0:15:44.604] Operation completed: Parse - Check [10827 msec]
    [+0:15:44.671] Starting operation: Parse - HighlightBraces
    [+0:15:44.672] Operation completed: Parse - HighlightBraces [0 msec]

     

    Long Header rebuild:

    [+0:22:28.865] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:28.866] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:22:28.866] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:22:28.871] Starting operation: Parse - Check
    [+0:22:28.871] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:28.871] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp during initial check. It will be re-built.
    [+0:22:28.899] c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp has not changed since last build. Doing a quick recheck...
    [+0:22:28.899] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp during initial check. It will be re-built.
    [+0:22:28.903] Rebuilding PSF 0 (normal preamble)...
    [+0:22:28.903] Starting fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:50.120] Completed fpsBuildingPreamble on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:50.120] Successfully rebuilt PSF 0 (normal preamble)...
    [+0:22:50.120] Saving PSF 0 (normal preamble) to C:\Users\manu.lange\Source\ROS_Projects\CodeDB\rex_interface-Release-Win32\tmp00000003.npd...
    [+0:22:50.120] Starting fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:50.166] Completed fpsSavingPSF on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:50.166] Successfully saved PSF 0 (normal preamble)...
    [+0:22:50.166] Starting fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:54.274] Starting fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:58.588] Completed fpsAnalyzingReferences on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:58.728] Completed fpsParsingFileBody on c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp
    [+0:22:58.728] Starting operation: Exporting parse results
    [+0:22:58.728] Checking c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp for missing headers...
    [+0:22:58.728] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp.
    [+0:22:58.890] Operation completed: Exporting parse results [161 msec]
    [+0:22:58.890] Checked C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp: 0 error records
    [+0:22:59.131] Operation completed: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\include\rex_interface\rex_interface.hpp [30260 msec]
    [+0:22:59.137] Operation completed: Parse - Check [30266 msec]
    [+0:22:59.179] Starting operation: Parse - HighlightBraces
    [+0:22:59.179] Operation completed: Parse - HighlightBraces [0 msec]

    #9348
    support
    Keymaster

    Hi,

    Sorry, looks like you are using v5.1. Please try the latest v5.2 beta. It uses separate internal environments to handle the long reparse and critical operations like code completion, so it should be much faster.

    #9349
    NZNobody
    Participant

    Hello,

    I checked versions, as in first post I was on 5.2 (Preview 1). I noted that there was a preview 3 and installed that, but the same actions produce the same results sadly. LOG FILE.

    Saving (with no changes) the .cpp causes a 30s rebuild when switching to the .hpp

    [+0:02:57.914] Operation completed: Parse - Check [31605 msec]

    VGDB Version 5.2 (Beta 3)

    Thanks šŸ™‚

    #9376
    support
    Keymaster

    Hi,

    Thanks for the log. It looks like you have modified the main source file and then tried reparsing one of the header files. This does look like a bottleneck and we could optimize this further.

    Can you confirm that code completion within the main .cpp file works reasonably fast after the trick with explicitly ending the preamble?

    #9380
    NZNobody
    Participant

    I can confirm that explicitly ending the preamble reduced re-parsing times for the .cpp file from roughly 38s to 11s.

    Maybe there is a similar trick for the .hpp file, but since in the .hpp I don’t explicitly ‘include’ the .cpp file I don’t know how to separate these. You are right, technically I modified the .cpp file by re-saving it. Then simply switching back to the .hpp causes a re-parse. In my normal programming behavior I am often saving my source files and then briefly wanting to look at a header for information, so then having to wait 30+s to carry on is inconvenient.

    Regards,

    #9389
    support
    Keymaster

    Hi,

    Unfortunately currently there is no such trick for the .hpp file, but we will look into handling this automatically once the final v5.2 is out (beginning of the next week). Right now VisualGDB simply checks for the timestamp of the main .cpp file, but we could easily make it check the relevant file contents.

    One major optimization of v5.2 is that code completion (when you type code or press ctrl-space) should work even while the 10-second ‘parse – check’ phase is active, so the 10-second delay should only affect advanced colorization of newly typed text, but not most of the normal functionality. Could you confirm that it actually works for your project?

    #9401
    NZNobody
    Participant

    Hello,

     

    I can confirm that if I trigger a reparse by say saving the current file, IĀ CAN still access code-completion during that time.

    If I however trigger a full rebuild (by say saving the .cpp, and switching to .hpp, or without the preamble guard), then IĀ CANNOT access code completion during rebuild. View below excerpt for example:

     

    [+0:06:18.300] Active document changed to C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:06:18.316] Checking c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp for missing headers..
    [+0:06:18.316] No missing headers for c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp
    [+0:06:18.327] Starting operation: Parse - Check
    [+0:06:18.327] Starting operation: Reparsing C:\Users\manu.lange\Source\ROS_Projects\rex_interface\src\rex_interface.cpp
    [+0:06:18.479] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built
    [+0:06:18.495] c:\users\manu.lange\source\ros_projects\rex_interface\src\rex_interface.cpp has not changed since last build. Doing a quick recheck..
    [+0:06:18.603] Found an outdated PSF 0 due to c:\users\manu.lange\source\ros_projects\rex_interface\include\rex_interface\rex_interface.hpp during initial check. It will be re-built
    [+0:06:19.568] Starting operation: Parse - CompleteWord
    [+0:06:19.569] Starting operation: Code Completion at rex_interface.cpp:(104,2)
    [+0:06:43.896] Previously missing gnu/stubs-soft.h is still missin
    [+0:06:43.896] No changed PSFs found. Doing a CodeComplete run with minimal reparsing
    [+0:06:44.028] Operation completed: Code Completion at rex_interface.cpp:(104,2) [24459 msec]
    [+0:06:44.028] Code completion yielded 13013 suggestions (raw time: 24446/82/1/7 msec)
    [+0:06:44.028] Operation completed: Parse - CompleteWord [24460 msec]

    I look forward to the release version! Thanks a lot for your help, I guess we could consider this partially solved.

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.