Files
Hugo Locurcio 64b7a69e5b Add various GDScript, core, GUI and physics benchmarks
- Make idle and physics time measurements somewhat functional,
  given what the engine exposes.
2023-06-29 11:11:24 +02:00

221 lines
4.9 KiB
GDScript

extends Benchmark
const ITERATIONS = 2_000_000
# Benchmark various array types by:
# 1) Inserting ITERATIONS elements from the back
# 2) Updating all ITERATIONS elements
# 3) Popping all ITERATIONS elements from the front (non-constant complexity)
func benchmark_packed_int32_array() -> void:
var array := PackedInt32Array()
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_int64_array() -> void:
var array := PackedInt64Array()
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_int_array() -> void:
var array: Array[int] = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_int_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_float32_array() -> void:
var array := PackedFloat32Array()
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0.0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_float64_array() -> void:
var array := PackedFloat64Array()
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0.0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_float_array() -> void:
var array: Array[float] = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0.0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_float_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0.0
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_vector2_array() -> void:
var array := PackedVector2Array()
for i in ITERATIONS:
array.push_back(Vector2(i, i))
for i in ITERATIONS:
array[i] = Vector2.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_vector2_array() -> void:
var array: Array[Vector2] = []
for i in ITERATIONS:
array.push_back(Vector2(i, i))
for i in ITERATIONS:
array[i] = Vector2.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_vector2_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(Vector2(i, i))
for i in ITERATIONS:
array[i] = Vector2.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_vector3_array() -> void:
var array := PackedVector3Array()
for i in ITERATIONS:
array.push_back(Vector3(i, i, i))
for i in ITERATIONS:
array[i] = Vector3.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_vector3_array() -> void:
var array: Array[Vector3] = []
for i in ITERATIONS:
array.push_back(Vector3(i, i, i))
for i in ITERATIONS:
array[i] = Vector3.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_vector3_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(Vector3(i, i, i))
for i in ITERATIONS:
array[i] = Vector3.ZERO
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_color_array() -> void:
var array := PackedColorArray()
for i in ITERATIONS:
array.push_back(Color(i, i, i, 1.0))
for i in ITERATIONS:
array[i] = Color.BLACK
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_color_array() -> void:
var array: Array[Color] = []
for i in ITERATIONS:
array.push_back(Color(i, i, i, 1.0))
for i in ITERATIONS:
array[i] = Color.BLACK
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_color_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(Color(i, i, i, 1.0))
for i in ITERATIONS:
array[i] = Color.BLACK
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_packed_string_array() -> void:
var array := PackedStringArray()
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_typed_string_array() -> void:
var array: Array[String] = []
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_untyped_string_array() -> void:
var array = []
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(array.size() - 1)
func benchmark_fill_loop() -> void:
var array = []
array.resize(10_000_000)
for i in array.size():
array[i] = 1234
func benchmark_fill_method() -> void:
var array = []
array.resize(10_000_000)
array.fill(1234)