Skip to content

Show query performance directly at the method itself, leveraging CodeLens to get direct insights

Notifications You must be signed in to change notification settings

ReinoutWW/QueryPerf-VS-Extension-CodeLens

Repository files navigation

CodeLens Query Performance - V2

A Visual Studio 2022 Extension that displays query performance statistics in the editor, leveraging CodeLens. The extension reads saved data (e.g., from a CSV file) to show execution time, bytes sent/received, row counts, column counts, and more—directly above each method in your source code.

Example Image

Overview

  • Purpose: Give developers immediate insight into performance metrics at the method level, without leaving the IDE.
  • Data Source: A CSV file (for demo purposes) located at C:\CodeLens\CodeLensSourceData3.csv.
  • Identification: Each row in the dataset corresponds to a specific “tag” (namespace + class + method signature).
  • Future: An automatic connection to Azure Application Insights is planned for live, dynamic data.

Preview

Example Image

*CodeLens Query Performance Extension Preview*

How It Works

  1. Tag Detection
    The extension identifies methods by a “tag” (usually a combination of namespace, class, and method).

  2. Data Lookup
    When you open or hover over a method in Visual Studio, CodeLens queries the CSV file for matching performance data (using the tag).

  3. Display Metrics
    If found, the extension shows performance metrics (min/max/avg/total) for items like:

    • Bytes Sent
    • Bytes Received
    • Total Bytes
    • Row Count
    • Column Count
    • Execution Time
    • (and more, as your dataset supports)

Dataset Format

For this demo version, you must place your CSV dataset at: C:\CodeLens\CodeLensSourceData3.csv

Each row in the CSV should match the following schema:

Column Description
Tag Identifier (namespace.class.method)
QueryCount Number of times the query was invoked
UniqueUserCount Number of unique users who triggered the query
BytesSent_Min Minimum bytes sent
BytesSent_Max Maximum bytes sent
BytesSent_Avg Average bytes sent
BytesSent_Total Total bytes sent
BytesReceived_Min Minimum bytes received
BytesReceived_Max Maximum bytes received
BytesReceived_Avg Average bytes received
BytesReceived_Total Total bytes received
TotalBytes_Min Minimum total bytes (sent + received)
TotalBytes_Max Maximum total bytes (sent + received)
TotalBytes_Avg Average total bytes (sent + received)
TotalBytes_Total Summation of total bytes (sent + received)
Rows_Min Minimum rows returned (SelectRows + IduRows)
Rows_Max Maximum rows returned
Rows_Avg Average rows returned
Rows_Total Total rows returned
Columns_Min Minimum column count
Columns_Max Maximum column count
Columns_Avg Average column count
Columns_Total Total columns across queries
ExecutionTime_Min Minimum execution time (milliseconds)
ExecutionTime_Max Maximum execution time
ExecutionTime_Avg Average execution time
ExecutionTime_Total Summation of execution time across all queries

(You can add or remove columns as needed, as long as the extension’s code is updated to parse them.)

Setup & Installation

  1. Build the Extension
    Open the solution in Visual Studio 2022 and build the CodeLens Query Performance - V2 project.

  2. Install/Deploy

    • After building, you can install the resulting .vsix file or launch the experimental VS instance for testing.
  3. Prepare the CSV

    • Place your CSV at the path C:\CodeLens\CodeLensSourceData3.csv.
    • Ensure each row has a tag that matches your actual method signature (e.g., MyProject.DataAccess.UserRepository.GetUserById).
  4. Launch Visual Studio

    • Open any solution containing methods that match the tags in your CSV.
    • Verify CodeLens appears above those methods, showing the relevant performance data.

Future Enhancements

  • Azure Application Insights Integration
    Instead of relying on a local CSV, the extension could pull real-time telemetry from Azure App Insights.
  • Query Interceptors
    Automate data collection by intercepting queries at runtime and storing metrics in a central repository.
  • Customizable Layout
    Let users choose which metrics to display or hide in CodeLens.

Contributing

  1. Fork this repo.
  2. Create a feature branch.
  3. Commit your changes.
  4. Open a Pull Request with a clear description of your contribution.

License

This project is released as a demo. Check the accompanying license file (if any) for details.


Happy coding! For any inquiries or bug reports, please open an issue or contact the project maintainer.

About

Show query performance directly at the method itself, leveraging CodeLens to get direct insights

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages