Измерение скорости кода

Лучший способ помочь другим, поделиться своими находками.

Измерение скорости кода

Сообщение extravert 25 авг 2013, 21:04

Знаю, говорю я далеко не самые новые вещи, да и гугл первыми ссылками по запросу все скажет как нужно.
Но вот:
Синтаксис:
Используется csharp
using System;
using System.Diagnostics;

public class CodeTimer : IDisposable
{
    private readonly Stopwatch stopWatch;
    private readonly string name;
    public CodeTimer()
    {
        name = "noname";
        stopWatch = Stopwatch.StartNew();
    }

    public CodeTimer(string name)
    {
        this.name = name;
        stopWatch = Stopwatch.StartNew();
    }

    public void Dispose()
    {
        stopWatch.Stop();
        long ts = 1000000L * stopWatch.ElapsedTicks / Stopwatch.Frequency;
        UnityEngine.Debug.Log("Время работы кода '" + name + "': " + ts + "мкс.");
    }
}


Это более-менее удобная надстройка над классом StopWatch. Ключевое различие только в методе обращения.

С stopWatch это было так:
Синтаксис:
Используется csharp
stopWatch = Stopwatch.StartNew();
//наш код
stopWatch.Stop();
ts = 1000000L * stopWatch.ElapsedTicks / Stopwatch.Frequency;
UnityEngine.Debug.Log("Время работы кода ": " + ts + "мкс.");


Я нашел это неудобным и потому переделал. С этим классом стало так:
Синтаксис:
Используется csharp
using (new CodeTimer("Основной цикл") {
//Наш код
}
 

или если скобки не желательны
Синтаксис:
Используется csharp
var c = new CodeTimer("Основной цикл");
//Наш код
c.Dispose();
 
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2