> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor/ks.reactor.ksperformancetimer.md).

# Class ksPerformanceTimer

Namespace: [KS.Reactor](/reactor/api-reference/ks.reactor.md)\
Assembly: KSCommon.dll

Basic performance timer that tracks time and reports timing statistics.

```csharp
public class ksPerformanceTimer : ksIPerformanceTimer
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [ksPerformanceTimer](/reactor/api-reference/ks.reactor/ks.reactor.ksperformancetimer.md)

#### Implements

[ksIPerformanceTimer](/reactor/api-reference/ks.reactor/ks.reactor.ksiperformancetimer.md)

#### Inherited Members

[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Constructors

### ksPerformanceTimer(string, int) <a href="#ks_reactor_ksperformancetimer__ctor_system_string_system_int32" id="ks_reactor_ksperformancetimer__ctor_system_string_system_int32"></a>

Constructor.

```csharp
public ksPerformanceTimer(string logChannel, int logInterval = -1)
```

#### Parameters

`logChannel` [string](https://learn.microsoft.com/dotnet/api/system.string)

Channel used to log timer stats.

`logInterval` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Time in milliseconds between logs. A negative value disables the timer. Zero will reporty every sample.

## Properties

### LogInterval <a href="#ks_reactor_ksperformancetimer_loginterval" id="ks_reactor_ksperformancetimer_loginterval"></a>

Ammount of time between timer logs in milliseconds. A negative log value will disable the timer. A zero value will report the timer value every sample.

```csharp
public int LogInterval { get; set; }
```

#### Property Value

[int](https://learn.microsoft.com/dotnet/api/system.int32)

### State <a href="#ks_reactor_ksperformancetimer_state" id="ks_reactor_ksperformancetimer_state"></a>

The state of the timer.

```csharp
public ksPerformanceTimer.States State { get; }
```

#### Property Value

[ksPerformanceTimer](/reactor/api-reference/ks.reactor/ks.reactor.ksperformancetimer.md).[States](/reactor/api-reference/ks.reactor/ks.reactor.ksperformancetimer/ks.reactor.ksperformancetimer.states.md)

## Methods

### ClearStats() <a href="#ks_reactor_ksperformancetimer_clearstats" id="ks_reactor_ksperformancetimer_clearstats"></a>

Clear the current timing stats.

```csharp
public void ClearStats()
```

### LogStats() <a href="#ks_reactor_ksperformancetimer_logstats" id="ks_reactor_ksperformancetimer_logstats"></a>

Print the current timing stats.

```csharp
public void LogStats()
```

### Pause() <a href="#ks_reactor_ksperformancetimer_pause" id="ks_reactor_ksperformancetimer_pause"></a>

Pause a timing cycle. Time between pause and resume calls will not be included in the current timing data.

```csharp
public void Pause()
```

### Restart() <a href="#ks_reactor_ksperformancetimer_restart" id="ks_reactor_ksperformancetimer_restart"></a>

Stops and restarts the timer.

```csharp
public void Restart()
```

### Resume() <a href="#ks_reactor_ksperformancetimer_resume" id="ks_reactor_ksperformancetimer_resume"></a>

Resume the timer.

```csharp
public void Resume()
```

### Start() <a href="#ks_reactor_ksperformancetimer_start" id="ks_reactor_ksperformancetimer_start"></a>

Start the timer.

```csharp
public void Start()
```

### Stop() <a href="#ks_reactor_ksperformancetimer_stop" id="ks_reactor_ksperformancetimer_stop"></a>

Stop the timer and add the elapsed time to the timing stats. If the time since the last stats log exceeds the log interval a new log message with the stats will be printed and the stats will be cleared.

```csharp
public void Stop()
```
