Update Job

This commit is contained in:
2026-02-21 17:20:51 +09:00
parent 4f964b2d2a
commit 7367826978
23 changed files with 511 additions and 276 deletions

View File

@@ -10,8 +10,8 @@ namespace Misaki.HighPerformance.Test.Benchmark;
[MemoryDiagnoser]
public class ParallelNoiseBenchmark
{
private const int _WIDTH = 64;
private const int _HEIGHT = 64;
private const int _WIDTH = 2048;
private const int _HEIGHT = 2048;
private const int _LENGTH = _WIDTH * _HEIGHT;
internal JobScheduler _jobScheduler = null!;
@@ -20,7 +20,7 @@ public class ParallelNoiseBenchmark
[GlobalSetup]
public void Setup()
{
_jobScheduler = new JobScheduler(Environment.ProcessorCount - 1);
_jobScheduler = new JobScheduler(Environment.ProcessorCount);
_buffers = new UnsafeArray<float>(_LENGTH, Allocator.Persistent);
}
@@ -52,7 +52,7 @@ public class ParallelNoiseBenchmark
{
var x = i % _WIDTH;
var y = i / _HEIGHT;
var uv = new Vector2(x, y);
var uv = new Vector2(x, y) / new Vector2(_WIDTH, _HEIGHT);
_buffers[i] = NoiseJobVector.GradientNoise(uv);
});
}
@@ -64,7 +64,7 @@ public class ParallelNoiseBenchmark
{
var x = i % _WIDTH;
var y = i / _HEIGHT;
var uv = new Vector2(x, y);
var uv = new Vector2(x, y) / new Vector2(_WIDTH, _HEIGHT);
_buffers[i] = NoiseJobVector.GradientNoise(uv);
}
}

View File

@@ -26,50 +26,6 @@ public unsafe class SPMDBenchmark
NativeMemory.Free(_buf);
}
[Benchmark]
public void VectorNoiseSingleThread()
{
var job = new Jobs.NoiseJobVector
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
job.Run(_SIZE * _SIZE, 0);
}
[Benchmark]
public void VectorJobNoise()
{
var job = new Jobs.NoiseJobVector
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
var handle = _scheduler.ScheduleParallel(ref job, _SIZE * _SIZE, 64);
_scheduler.WaitComplete(handle);
}
[Benchmark]
public void ParallelVectorNoise()
{
var job = new Jobs.NoiseJobVector
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
Parallel.For(0, _SIZE * _SIZE, (i) =>
{
job.Execute(i, 0);
});
}
[Benchmark(Baseline = true)]
public void SPMDNoise()
{
@@ -83,4 +39,61 @@ public unsafe class SPMDBenchmark
var handle = _scheduler.ScheduleParallelSPDM<Jobs.NoiseJobMathSPMD, float>(ref job, _SIZE * _SIZE, 64, -1, JobHandle.Invalid);
_scheduler.WaitComplete(handle);
}
[Benchmark]
public void JobNoise()
{
var job = new Jobs.NoiseJobVectorFor
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
var handle = _scheduler.ScheduleParallelFor(ref job, _SIZE * _SIZE, 64, -1, JobHandle.Invalid);
_scheduler.WaitComplete(handle);
}
//[Benchmark]
public void MathJobNoise()
{
var job = new Jobs.NoiseJobMath
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
var handle = _scheduler.ScheduleParallel(ref job, _SIZE * _SIZE, 64, -1, JobHandle.Invalid);
_scheduler.WaitComplete(handle);
}
//[Benchmark]
public void ParallelNoise()
{
var job = new Jobs.NoiseJobVectorFor
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
Parallel.For(0, _SIZE * _SIZE, (i) =>
{
job.Execute(i, 0);
});
}
[Benchmark]
public void SingleThreadNoise()
{
var job = new Jobs.NoiseJobVectorFor
{
buffers = _buf,
width = _SIZE,
height = _SIZE,
};
job.Run(_SIZE * _SIZE, 0);
}
}