Update Job
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user