# GetCurrentSummaryMetrics

> Gets a summary of the metrics collected for AsyncReadManager read operations since you started data collection or last cleared the metrics data.

## Definition

* **Type:** Method
* **Namespace:** [Unity.IO.LowLevel.Unsafe](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe.md)
* **Assembly:** UnityEngine.CoreModule

## GetCurrentSummaryMetrics(Flags)

Gets a summary of the metrics collected for [AsyncReadManager](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanager.md) read operations since you started data collection or last cleared the metrics data.

```csharp
public static AsyncReadManagerSummaryMetrics GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags flags)
```

### Parameters

**** (\[Flags]\(/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetrics/flags)): Flags to control the behavior, including clearing the underlying completed metrics after reading.

### Returns

| Type                                                                                                                         | Description                            |
| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| [AsyncReadManagerSummaryMetrics](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagersummarymetrics.md) | A summary of the current metrics data. |

### Remarks

The returned [AsyncReadManagerSummaryMetrics](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagersummarymetrics.md) object provides overall statistics about the collected data. Call [AsyncReadManagerMetrics.GetMetrics](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetrics/getmetrics.md) to get the underlying metrics data used for the summary.

Set the `flags` parameter to clear all data after returning the summary. This has the same affect as calling [AsyncReadManagerMetrics.ClearCompletedMetrics](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetrics/clearcompletedmetrics.md).

### Examples

```csharp
using Unity.IO.LowLevel.Unsafe;
using UnityEngine;
public class AsyncReadManagerMetricsSample : MonoBehaviour
{
#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    void Start()
    {
        AsyncReadManagerMetrics.StartCollectingMetrics();
    }

    void Update()
    {
        if (Time.frameCount == 10)
        {
            AsyncReadManagerSummaryMetrics summaryOfMetrics = AsyncReadManagerMetrics.GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
            Debug.LogFormat($"Average bandwidth of every read over 10 frames: {summaryOfMetrics.AverageBandwidthMBPerSecond}MB/s");
            Debug.LogFormat($"Number of completed reads in 10 frames: {summaryOfMetrics.NumberOfCompletedRequests}");
            Debug.LogFormat($"Total number of requests in 10 frames: {summaryOfMetrics.TotalNumberOfRequests}");
            Debug.LogFormat($"Subsystem responsible for longest file read: {summaryOfMetrics.LongestReadSubsystem}");
            Debug.LogFormat($"Asset type responsible for longest wait: {summaryOfMetrics.LongestWaitAssetType}");
        }
    }

#endif
}
```

## GetCurrentSummaryMetrics(AsyncReadManagerMetricsFilters, Flags)

Gets a filtered summary of the metrics collected for [AsyncReadManager](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanager.md) read operations since you started data collection or last cleared the metrics data.

```csharp
public static AsyncReadManagerSummaryMetrics GetCurrentSummaryMetrics(AsyncReadManagerMetricsFilters metricsFilters, AsyncReadManagerMetrics.Flags flags)
```

### Parameters

**** (\[AsyncReadManagerMetricsFilters]\(/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetricsfilters)): The filters to apply to the metrics before calculating the summary.**** (\[Flags]\(/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetrics/flags)): Flags to control the behavior, including clearing the underlying completed metrics after reading.

### Returns

| Type                                                                                                                         | Description                                                                       |
| ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| [AsyncReadManagerSummaryMetrics](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagersummarymetrics.md) | A summary of the current metric data, filtered by the specified `metricsFilters`. |

### Remarks

This function filters the metrics collected for [AsyncReadManager](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanager.md) read operations and provides a summary based on the filtered data. See [AsyncReadManagerMetricsFilters](/engine/6000.6/script-reference/unity/io/lowlevel/unsafe/asyncreadmanagermetricsfilters/ctor.md) for information about filter creation.

### Examples

```csharp
using Unity.IO.LowLevel.Unsafe;
using UnityEngine;

public class AsyncReadManagerMetricsSample : MonoBehaviour
{
#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerMetricsFilters filters;
    void Start()
    {
        AsyncReadManagerMetrics.StartCollectingMetrics();
        filters = new AsyncReadManagerMetricsFilters();
        filters.SetPriorityFilter(Priority.PriorityHigh);
        filters.SetSubsystemFilter(AssetLoadingSubsystem.Texture);
    }

    void Update()
    {
        AsyncReadManagerSummaryMetrics filteredSummaryOfMetrics = AsyncReadManagerMetrics.GetCurrentSummaryMetrics(filters, AsyncReadManagerMetrics.Flags.None);
        Debug.LogFormat($"Number of requests matching given filters: {filteredSummaryOfMetrics.TotalNumberOfRequests}");
        Debug.LogFormat($"Average bandwidth for textures in high priority queue: {filteredSummaryOfMetrics.AverageBandwidthMBPerSecond}MB/s");
        // Clear completed reads from metrics each frame to avoid rereading the same requests
        AsyncReadManagerMetrics.ClearCompletedMetrics();
    }

#endif
}
```
