mirror of
https://github.com/microsoft/HybridRow.git
synced 2026-01-25 20:33:17 +00:00
Copied dotnet code from CosmosDB repository
This commit is contained in:
89
dotnet/src/HybridRow.Tests.Perf/Measurements.cs
Normal file
89
dotnet/src/HybridRow.Tests.Perf/Measurements.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
// ------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// ------------------------------------------------------------
|
||||
|
||||
namespace Microsoft.Azure.Cosmos.Serialization.HybridRow.Tests.Perf
|
||||
{
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
internal class Measurements : IDisposable
|
||||
{
|
||||
private static readonly long RunId = DateTime.UtcNow.Ticks;
|
||||
private readonly FileStream file;
|
||||
private readonly TextWriter writer;
|
||||
|
||||
public Measurements(string path)
|
||||
{
|
||||
FileInfo info = new FileInfo(path);
|
||||
if (info.Exists)
|
||||
{
|
||||
this.file = new FileStream(path, FileMode.Append);
|
||||
this.writer = new StreamWriter(this.file, Encoding.ASCII);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.file = new FileStream(path, FileMode.CreateNew);
|
||||
this.writer = new StreamWriter(this.file, Encoding.ASCII);
|
||||
this.writer.WriteLine(
|
||||
"RunId,Model,Operation,Schema,API,Iterations,Size (bytes),Total (ms),Duration (ms),Allocated (bytes),ThreadId,Gen0,Gen1,Gen2,Total Allocated (bytes)");
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
this.writer.Flush();
|
||||
this.writer.Dispose();
|
||||
this.file.Dispose();
|
||||
}
|
||||
|
||||
public void WriteMeasurement(string model, string operation, string schema, string api,
|
||||
int outerLoopIterations, int innerLoopIterations, long totalSize, double totalDurationMs,
|
||||
int threadId, int gen0, int gen1, int gen2, long totalAllocatedBytes)
|
||||
{
|
||||
Console.WriteLine(
|
||||
"RunId: {0}, \nModel: {1} \nOperation: {2} \nSchema: {3} \nAPI: {4}",
|
||||
Measurements.RunId,
|
||||
model,
|
||||
operation,
|
||||
schema,
|
||||
api);
|
||||
|
||||
Console.WriteLine(
|
||||
"\n\nIterations: {0} \nSize (bytes): {1:F0} \nTotal (ms): {2:F4} \nDuration (ms): {3:F4} \nAllocated (bytes): {4:F4}",
|
||||
outerLoopIterations,
|
||||
totalSize / outerLoopIterations,
|
||||
totalDurationMs,
|
||||
totalDurationMs / (outerLoopIterations * innerLoopIterations),
|
||||
totalAllocatedBytes / (outerLoopIterations * innerLoopIterations));
|
||||
|
||||
Console.WriteLine(
|
||||
"\n\nThread: {0} \nCollections: {1}, {2}, {3} \nTotal Allocated: {4:n0} (bytes)",
|
||||
threadId,
|
||||
gen0,
|
||||
gen1,
|
||||
gen2,
|
||||
totalAllocatedBytes);
|
||||
|
||||
|
||||
this.writer.WriteLine(
|
||||
"{0},{1},{2},{3},{4},{5},{6:F0},{7:F8},{8:F8},{9:F8},{10},{11},{12},{13},{14:0}",
|
||||
Measurements.RunId,
|
||||
model,
|
||||
operation,
|
||||
schema,
|
||||
api,
|
||||
outerLoopIterations,
|
||||
totalSize / outerLoopIterations,
|
||||
totalDurationMs,
|
||||
totalDurationMs / (outerLoopIterations * innerLoopIterations),
|
||||
totalAllocatedBytes / (outerLoopIterations * innerLoopIterations),
|
||||
threadId,
|
||||
gen0,
|
||||
gen1,
|
||||
gen2,
|
||||
totalAllocatedBytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user