using System.Diagnostics;
using UnityEngine;
using Debug = UnityEngine.Debug;
public class Test : MonoBehaviour {
private Bounds b = new Bounds(Vector3.zero, new Vector3(10, 10, 10));
private void Start() {
var sw = Stopwatch.StartNew();
test1();
sw.Stop();
Debug.Log(sw.ElapsedMilliseconds);
sw.Start();
test2();
sw.Stop();
Debug.Log(sw.ElapsedMilliseconds);
sw.Start();
test3();
sw.Stop();
Debug.Log(sw.ElapsedMilliseconds);
sw.Start();
test4();
sw.Stop();
Debug.Log(sw.ElapsedMilliseconds);
}
private void test1() {
for (var i = 0; i < 1000; i++) {
for (var x = (int) b.min.x; x < b.max.x; x++) {
for (var y = (int) b.min.y; y < b.max.y; y++) {
for (var z = (int) b.min.z; z < b.max.z; z++) {
var bc = Random.value;
}
}
}
}
}
private void test2() {
for (var i = 0; i < 1000; i++) {
var x1 = b.min.x;
var x2 = b.max.x;
var y1 = b.min.y;
var y2 = b.max.y;
var z1 = b.min.z;
var z2 = b.max.z;
for (var x = (int) x1; x < x2; x++) {
for (var y = (int) y1; y < y2; y++) {
for (var z = (int) z1; z < z2; z++) {
var bc = Random.value;
}
}
}
}
}
private void test3() {
var bc = new Vector3(4, 4, 4);
var testStruct = new TestStruct(new Vector3(-5, -5, -5), new Vector3(5, 5, 5));
for (var i = 0; i < 100000; i++) {
testStruct.Contains(bc);
}
}
private void test4() {
var bc = new Vector3(4, 4, 4);
for (var i = 0; i < 100000; i++) {
b.Contains(bc);
}
}
}
public struct TestStruct {
public readonly Vector3 Max;
public readonly Vector3 Min;
public TestStruct(Vector3 min, Vector3 max) {
Min = min;
Max = max;
}
public bool Contains(Vector3 bc) {
return bc.x >= Min.x && bc.x <= Max.x && bc.y >= Min.y && bc.y <= Max.y && bc.z >= Min.z && bc.z <= Max.z;
}
}