Open chairfull opened 2 weeks ago
Test results for 4.3 without <-- Engine.is_editor_hint() --> with | non | prp | dif | non | prp | dif | |
---|---|---|---|---|---|---|---|
696 | 790 | 1.13 | 689 | 663 | 0.96 | ||
660 | 783 | 1.18 | 662 | 654 | 0.98 | ||
656 | 780 | 1.18 | 659 | 652 | 0.98 | ||
654 | 780 | 1.19 | 661 | 657 | 0.99 |
@huwpascoe
Test results for 4.4 dev 3 without <-- Engine.is_editor_hint() --> with
non | prp | dif | non | prp | dif | |
---|---|---|---|---|---|---|
174 | 284 | 1.63 | 171 | 260 | 1.52 | |
177 | 266 | 1.50 | 164 | 255 | 1.55 | |
164 | 259 | 1.58 | 162 | 237 | 1.46 | |
152 | 263 | 1.73 | 160 | 255 | 1.59 |
this is my system: Godot v4.4.dev3 - Windows 10.0.22631 - Multi-window, 1 monitor - OpenGL 3 (Compatibility) - NVIDIA GeForce RTX 2080 Ti (NVIDIA; 32.0.15.6094) - 12th Gen Intel(R) Core(TM) i5-12400F (12 threads)
Tested versions
System information
Godot v4.3.stable - Ubuntu 24.04.1 LTS 24.04 - X11 - GLES3 (Compatibility) - AMD Radeon R9 200 Series (radeonsi, pitcairn, LLVM 17.0.6, DRM 3.57, 6.8.0-45-generic) - AMD FX(tm)-6300 Six-Core Processor (6 Threads)
Issue description
When a script has a
_get_property_list()
method with many properties, then callingload().instantiate()
is much slower (2-8x in my case) while testing from the editor.But when the project is built, the lag is gone. So it's only in editor.
I feel the obvious solution is below, but it doesn't work.
Steps to reproduce
"res://test_scene.tscn"
with this script on a node:var a := 0.0 var b := "b" var c := [1, 2, 3, 4] var d := false var e := { x=false } var f := Vector2.ZERO
var bool_a := false var bool_b := true var bool_c := true var bool_d := false var bool_e := false var bool_f := true
var str_a := "a" var str_b := "bb" var str_c := "ccc" var str_d := "dddd" var str_e := "eeeee" var str_f := "ffffff"
var arr_a := [] var arr_b := [1] var arr_c := [false, true] var arr_d := [[], [], [], []] var arr_e := [{}, {}, {}, {}, {}] var arr_f := ["f", "ff", "fff", "ffff", "fffff"]
var dict_a := {} var dict_b := {x=1} var dict_c := {a=1, b=2} var dict_d := {a=true, b=true, c=true} var dict_e := {x=[], y=false, c=true, e=Vector2.ZERO} var dict_f := {a="a", b="b", c="c", d="d", e="e"}
var np_a := ^"../property_list" var np_b := ^"../property_list" var np_c := ^"../property_list" var np_d := ^"../property_list" var np_e := ^"../property_list" var np_f := ^"../property_list"
func _get_property_list() -> Array[Dictionary]: var props: Array[Dictionary]
_get_property_list()
and run again, it will be 2x faster.Minimal reproduction project (MRP)
test_property_list.zip