Конференція vbstreets - перегляд теми - як обнулити значення змінної date1 типу datetime

Вітаю всіх.
Хочу обчислити тривалість виконання функції.
Використовую (поки) дві змінні date1 і date2 типу DateTime.
Першу визначаю перед стартом виконання функції, другу після закінчення. Для нового виміру змінні потрібно очистити від значень.
Питання: як?

date1 = System.DateTime.Now; // присвоїв змінної значення поточного моменту
sort1.shellsort (Tabel_2); // запустив функцію яку перевіряю
date2 = System.DateTime.Now; // присвоїв другий змінної значення моменту закінчення виконання функції
System.TimeSpan diff0 = date2.Subtract (date1); // отримав різницю в мілісекундах.
lblTijdBubblesort.Text = diff0.Milliseconds.ToString (); // відобразив значення інтервалу на lebel

А взагалі може існує більш культурний спосіб?

Спочатку думав таймер використовувати як секундомір. Думаю поміщу таймер на форму, перед запуском процедури запущу, після закінчення виконання функції зупиню і отримаю циферку в мілісекундах. Але ж ні, так таймер не працює.
Задаси інтервал таймером, старт, а ось після закінчення інтервалу стоп. Так працює.

Прошу допоможіть учневі.
Заздалегідь дякую.

VladD2 написав тут якось клас:

using System;
using System.Runtime.InteropServices;

Код: Виділити все namespace Utils
# 123;
///


/// Ця структура дозволяє підрахувати швидкість виконання коду одним з
/// найбільш точним способів. Фактично обчислення проводяться в тактах
/// процесора, а потім переводяться в милисекунд # 40; десяткова частина
/// є частками секунди # 41 ;.
///

public struct PerfCounter
# 123;
Int64 _start;

///


/// Починає підрахунок вермени виконання.
///

public void Start # 40; # 41;
# 123;
_start = 0;
QueryPerformanceCounter # 40; ref _start # 41 ;;
# 125;

///


/// Завершує полсчет вермени виконання і повертає час в секундах.
///

/// Час в секундах витрачений на виконання ділянки
/// коду. Десяткова частина відображає частки секунди.

public float Finish # 40; # 41;
# 123;
Int64 finish = 0;
QueryPerformanceCounter # 40; ref finish # 41 ;;

Int64 freq = 0;
QueryPerformanceFrequency # 40; ref freq # 41 ;;
return # 40; # 40; # 40; float # 41; # 40; finish - _start # 41; / # 40; float # 41; freq # 41; # 41 ;;
# 125;

# 91; DllImport # 40; "Kernel32.dll" # 41; # 93;
static extern bool QueryPerformanceCounter # 40; ref Int64 performanceCount # 41 ;;

# 91; DllImport # 40; "Kernel32.dll" # 41; # 93;
static extern bool QueryPerformanceFrequency # 40; ref Int64 frequency # 41 ;;
# 125;
# 125;


Використовувати його потрібно так:


Код: Виділити все // Де небудь оголошуємо змінну.
PerfCounter timer = new PerfCounter # 40; # 41 ;;

timer.Start # 40; # 41 ;; // Початок виміру

// Виводимо результат в консоль.
Console.WriteLine # 40; "Час виконання в секундах: # 123; 0: ### ### ## 0.0000 # 125; "
timer.Finish # 40; # 41; # 41 ;;
// Одну змінну можна використовувати багаторазово.

The difficult I'll do right now. The impossible will take a little while. (C) US engineers in WWII
I do not always know what I'm talking about, but I know I'm right. (C) Muhammad Ali