show stats about how long eval takes, and how long it takes per pixel
This commit is contained in:
parent
da83b1857e
commit
e47723b3c4
11
Program.cs
11
Program.cs
|
|
@ -70,6 +70,8 @@ void Main()
|
|||
bool shouldCancelUpdateTexture = false;
|
||||
bool shouldUpdateTexture = false;
|
||||
|
||||
float lastEvaluationTimeTook = 0.0f;
|
||||
|
||||
while (!Raylib.WindowShouldClose())
|
||||
{
|
||||
Raylib.BeginDrawing();
|
||||
|
|
@ -90,6 +92,7 @@ void Main()
|
|||
|
||||
Task.Run(() =>
|
||||
{
|
||||
Stopwatch sw = Stopwatch.StartNew();
|
||||
Instruction[] instructions = Parsing.Parse(programsProsperoVm);
|
||||
currentOutputImageData.AsSpan()[..currentOutputImageData.Length].Clear();
|
||||
|
||||
|
|
@ -102,6 +105,7 @@ void Main()
|
|||
Interpreter.Evaluate<float>(instructions, imageSize: currentOutputImageSize, interpreterOptions, currentOutputImageData);
|
||||
}
|
||||
|
||||
lastEvaluationTimeTook = (float)sw.Elapsed.TotalSeconds;
|
||||
Raylib.UpdateTexture(currentOutputTexture, currentOutputImageData);
|
||||
shouldCancelUpdateTexture = true;
|
||||
isEvaluating = false;
|
||||
|
|
@ -127,6 +131,13 @@ void Main()
|
|||
Raylib.DrawText("Sharpero (press R to evaluate, O to output to file)", 12, 12, 20, Color.White);
|
||||
Raylib.DrawText($" - parallelism {(shouldUseParallelism ? "enabled" : "disabled")} (P to toggle), simd {(shouldUseSimd ? "enabled" : "disabled")} (S to toggle)", 12, 32, 20, Color.White);
|
||||
|
||||
if (lastEvaluationTimeTook != 0.0f)
|
||||
{
|
||||
double nanoSecondsPerPixel =
|
||||
(lastEvaluationTimeTook * 1000.0 * 1000.0 * 1000.0) / (currentOutputImageSize * currentOutputImageSize) ;
|
||||
Raylib.DrawText($" - evaluation took: {lastEvaluationTimeTook:0.0} s ({nanoSecondsPerPixel:0.0} ns / pixel)", 12, 52, 20, Color.White);
|
||||
}
|
||||
|
||||
if (Raylib.IsKeyPressed(KeyboardKey.R))
|
||||
{
|
||||
shouldEvaluate = true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue