Stopwatch.ElapsedMilliseconds 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 인스턴스가 측정한 밀리초 단위의 총 경과 시간을 가져옵니다.
public:
property long ElapsedMilliseconds { long get(); };
public long ElapsedMilliseconds { get; }
member this.ElapsedMilliseconds : int64
Public ReadOnly Property ElapsedMilliseconds As Long
속성 값
현재 인스턴스가 측정한 총 밀리초 수를 나타내는 읽기 전용 정수(Long)입니다.
예제
다음 예제에서는 클래스를 Stopwatch 사용하여 문자열에서 정수 구문 분석을 위한 네 가지 구현의 성능을 측정합니다. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 Stopwatch 클래스입니다.
void TimeOperations()
{
Int64 nanosecPerTick = (1000L * 1000L * 1000L) / Stopwatch::Frequency;
const long numIterations = 10000;
// Define the operation title names.
array<String^>^operationNames = {"Operation: Int32.Parse(\"0\")","Operation: Int32.TryParse(\"0\")","Operation: Int32.Parse(\"a\")","Operation: Int32.TryParse(\"a\")"};
// Time four different implementations for parsing
// an integer from a string.
for ( int operation = 0; operation <= 3; operation++ )
{
// Define variables for operation statistics.
Int64 numTicks = 0;
Int64 numRollovers = 0;
Int64 maxTicks = 0;
Int64 minTicks = Int64::MaxValue;
int indexFastest = -1;
int indexSlowest = -1;
Int64 milliSec = 0;
Stopwatch ^ time10kOperations = Stopwatch::StartNew();
// Run the current operation 10001 times.
// The first execution time will be tossed
// out, since it can skew the average time.
for ( int i = 0; i <= numIterations; i++ )
{
Int64 ticksThisTime = 0;
int inputNum;
Stopwatch ^ timePerParse;
switch ( operation )
{
case 0:
// Parse a valid integer using
// a try-catch statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch::StartNew();
try
{
inputNum = Int32::Parse( "0" );
}
catch ( FormatException^ )
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse->Stop();
ticksThisTime = timePerParse->ElapsedTicks;
break;
case 1:
// Parse a valid integer using
// the TryParse statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch::StartNew();
if ( !Int32::TryParse( "0", inputNum ) )
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse->Stop();
ticksThisTime = timePerParse->ElapsedTicks;
break;
case 2:
// Parse an invalid value using
// a try-catch statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch::StartNew();
try
{
inputNum = Int32::Parse( "a" );
}
catch ( FormatException^ )
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse->Stop();
ticksThisTime = timePerParse->ElapsedTicks;
break;
case 3:
// Parse an invalid value using
// the TryParse statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch::StartNew();
if ( !Int32::TryParse( "a", inputNum ) )
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse->Stop();
ticksThisTime = timePerParse->ElapsedTicks;
break;
default:
break;
}
// Skip over the time for the first operation,
// just in case it caused a one-time
// performance hit.
if ( i == 0 )
{
time10kOperations->Reset();
time10kOperations->Start();
}
else
{
// Update operation statistics
// for iterations 1-10001.
if ( maxTicks < ticksThisTime )
{
indexSlowest = i;
maxTicks = ticksThisTime;
}
if ( minTicks > ticksThisTime )
{
indexFastest = i;
minTicks = ticksThisTime;
}
numTicks += ticksThisTime;
if ( numTicks < ticksThisTime )
{
// Keep track of rollovers.
numRollovers++;
}
}
}
// Display the statistics for 10000 iterations.
time10kOperations->Stop();
milliSec = time10kOperations->ElapsedMilliseconds;
Console::WriteLine();
Console::WriteLine( "{0} Summary:", operationNames[ operation ] );
Console::WriteLine( " Slowest time: #{0}/{1} = {2} ticks", indexSlowest, numIterations, maxTicks );
Console::WriteLine( " Fastest time: #{0}/{1} = {2} ticks", indexFastest, numIterations, minTicks );
Console::WriteLine( " Average time: {0} ticks = {1} nanoseconds", numTicks / numIterations, (numTicks * nanosecPerTick) / numIterations );
Console::WriteLine( " Total time looping through {0} operations: {1} milliseconds", numIterations, milliSec );
}
}
private static void TimeOperations()
{
long nanosecPerTick = (1000L*1000L*1000L) / Stopwatch.Frequency;
const long numIterations = 10000;
// Define the operation title names.
String [] operationNames = {"Operation: Int32.Parse(\"0\")",
"Operation: Int32.TryParse(\"0\")",
"Operation: Int32.Parse(\"a\")",
"Operation: Int32.TryParse(\"a\")"};
// Time four different implementations for parsing
// an integer from a string.
for (int operation = 0; operation <= 3; operation++)
{
// Define variables for operation statistics.
long numTicks = 0;
long numRollovers = 0;
long maxTicks = 0;
long minTicks = Int64.MaxValue;
int indexFastest = -1;
int indexSlowest = -1;
long milliSec = 0;
Stopwatch time10kOperations = Stopwatch.StartNew();
// Run the current operation 10001 times.
// The first execution time will be tossed
// out, since it can skew the average time.
for (int i=0; i<=numIterations; i++)
{
long ticksThisTime = 0;
int inputNum;
Stopwatch timePerParse;
switch (operation)
{
case 0:
// Parse a valid integer using
// a try-catch statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew();
try
{
inputNum = Int32.Parse("0");
}
catch (FormatException)
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse.Stop();
ticksThisTime = timePerParse.ElapsedTicks;
break;
case 1:
// Parse a valid integer using
// the TryParse statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew();
if (!Int32.TryParse("0", out inputNum))
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse.Stop();
ticksThisTime = timePerParse.ElapsedTicks;
break;
case 2:
// Parse an invalid value using
// a try-catch statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew();
try
{
inputNum = Int32.Parse("a");
}
catch (FormatException)
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse.Stop();
ticksThisTime = timePerParse.ElapsedTicks;
break;
case 3:
// Parse an invalid value using
// the TryParse statement.
// Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew();
if (!Int32.TryParse("a", out inputNum))
{
inputNum = 0;
}
// Stop the timer, and save the
// elapsed ticks for the operation.
timePerParse.Stop();
ticksThisTime = timePerParse.ElapsedTicks;
break;
default:
break;
}
// Skip over the time for the first operation,
// just in case it caused a one-time
// performance hit.
if (i == 0)
{
time10kOperations.Reset();
time10kOperations.Start();
}
else
{
// Update operation statistics
// for iterations 1-10000.
if (maxTicks < ticksThisTime)
{
indexSlowest = i;
maxTicks = ticksThisTime;
}
if (minTicks > ticksThisTime)
{
indexFastest = i;
minTicks = ticksThisTime;
}
numTicks += ticksThisTime;
if (numTicks < ticksThisTime)
{
// Keep track of rollovers.
numRollovers ++;
}
}
}
// Display the statistics for 10000 iterations.
time10kOperations.Stop();
milliSec = time10kOperations.ElapsedMilliseconds;
Console.WriteLine();
Console.WriteLine("{0} Summary:", operationNames[operation]);
Console.WriteLine(" Slowest time: #{0}/{1} = {2} ticks",
indexSlowest, numIterations, maxTicks);
Console.WriteLine(" Fastest time: #{0}/{1} = {2} ticks",
indexFastest, numIterations, minTicks);
Console.WriteLine(" Average time: {0} ticks = {1} nanoseconds",
numTicks / numIterations,
(numTicks * nanosecPerTick) / numIterations );
Console.WriteLine(" Total time looping through {0} operations: {1} milliseconds",
numIterations, milliSec);
}
}
Private Shared Sub TimeOperations()
Dim nanosecPerTick As Long = 1000000000 / Stopwatch.Frequency
Const numIterations As Long = 10000
' Define the operation title names.
Dim operationNames As String() = _
{"Operation: Int32.Parse(""0"")", _
"Operation: Int32.TryParse(""0"")", _
"Operation: Int32.Parse(""a"")", _
"Operation: Int32.TryParse(""a"")"}
' Time four different implementations for parsing
' an integer from a string.
Dim operation As Integer
For operation = 0 To 3
' Define variables for operation statistics.
Dim numTicks As Long = 0
Dim numRollovers As Long = 0
Dim maxTicks As Long = 0
Dim minTicks As Long = Int64.MaxValue
Dim indexFastest As Integer = - 1
Dim indexSlowest As Integer = - 1
Dim milliSec As Long = 0
Dim time10kOperations As Stopwatch = Stopwatch.StartNew()
' Run the current operation 10001 times.
' The first execution time will be tossed
' out, since it can skew the average time.
Dim i As Integer
For i = 0 To numIterations
Dim ticksThisTime As Long = 0
Dim inputNum As Integer
Dim timePerParse As Stopwatch
Select Case operation
Case 0
' Parse a valid integer using
' a try-catch statement.
' Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew()
Try
inputNum = Int32.Parse("0")
Catch e As FormatException
inputNum = 0
End Try
' Stop the timer, and save the
' elapsed ticks for the operation.
timePerParse.Stop()
ticksThisTime = timePerParse.ElapsedTicks
Case 1
' Parse a valid integer using
' the TryParse statement.
' Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew()
If Not Int32.TryParse("0", inputNum) Then
inputNum = 0
End If
' Stop the timer, and save the
' elapsed ticks for the operation.
timePerParse.Stop()
ticksThisTime = timePerParse.ElapsedTicks
Case 2
' Parse an invalid value using
' a try-catch statement.
' Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew()
Try
inputNum = Int32.Parse("a")
Catch e As FormatException
inputNum = 0
End Try
' Stop the timer, and save the
' elapsed ticks for the operation.
timePerParse.Stop()
ticksThisTime = timePerParse.ElapsedTicks
Case 3
' Parse an invalid value using
' the TryParse statement.
' Start a new stopwatch timer.
timePerParse = Stopwatch.StartNew()
If Not Int32.TryParse("a", inputNum) Then
inputNum = 0
End If
' Stop the timer, and save the
' elapsed ticks for the operation.
timePerParse.Stop()
ticksThisTime = timePerParse.ElapsedTicks
Case Else
End Select
' Skip over the time for the first operation,
' just in case it caused a one-time
' performance hit.
If i = 0 Then
time10kOperations.Reset()
time10kOperations.Start()
Else
' Update operation statistics
' for iterations 1-10001.
If maxTicks < ticksThisTime Then
indexSlowest = i
maxTicks = ticksThisTime
End If
If minTicks > ticksThisTime Then
indexFastest = i
minTicks = ticksThisTime
End If
numTicks += ticksThisTime
If numTicks < ticksThisTime Then
' Keep track of rollovers.
numRollovers += 1
End If
End If
Next i
' Display the statistics for 10000 iterations.
time10kOperations.Stop()
milliSec = time10kOperations.ElapsedMilliseconds
Console.WriteLine()
Console.WriteLine("{0} Summary:", operationNames(operation))
Console.WriteLine(" Slowest time: #{0}/{1} = {2} ticks", _
indexSlowest, numIterations, maxTicks)
Console.WriteLine(" Fastest time: #{0}/{1} = {2} ticks", _
indexFastest, numIterations, minTicks)
Console.WriteLine(" Average time: {0} ticks = {1} nanoseconds", _
numTicks / numIterations, numTicks * nanosecPerTick / numIterations)
Console.WriteLine(" Total time looping through {0} operations: {1} milliseconds", _
numIterations, milliSec)
Next operation
End Sub
End Class
설명
이 속성은 가장 가까운 전체 밀리초 값으로 반올림된 경과된 시간을 나타냅니다. 정밀도를 높이려면 또는 ElapsedTicks 속성을 사용합니다Elapsed.
instance 실행 중이거나 중지된 동안 Stopwatch , ElapsedMilliseconds및 ElapsedTicks 속성을 Elapsed쿼리할 수 있습니다. 경과된 시간 속성은 가 실행되는 동안 Stopwatch 꾸준히 증가합니다. instance 중지될 때 일정하게 유지됩니다.
기본적으로 instance 경과된 시간 값 Stopwatch 은 측정된 모든 시간 간격의 합계와 같습니다. 에 대한 Start 각 호출은 누적 경과 시간에 계산을 시작합니다. 에 대한 Stop 각 호출은 현재 간격 측정을 종료하고 누적 경과 시간 값을 고정합니다. 기존 instance Reset 누적 경과 시간을 지우려면 메서드를 Stopwatch 사용합니다.
적용 대상
추가 정보
.NET