Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace system default malloc with mimalloc #99427

Closed
wants to merge 7 commits into from

Conversation

YYF233333
Copy link
Contributor

@YYF233333 YYF233333 commented Nov 19, 2024

Implements godotengine/godot-proposals#11190
Simply replacing malloc/free in core/os/memory.cpp with mi_malloc/mi_free, and add a flag in scons to switch between them.
Choose mimalloc because it is small and easy to integrate.

Performance

build option: scons production=yes, projects come from godot issues which I think will benifit from this change.

Binary Size

master: 130,965,504 bytes
mimalloc: 131,048,448 bytes
About 81KB size increase, I think that's ok for editor.

Instantiate with Many Properties

from #97829
Run 10 loops calculate average time:

  • master
    Average: tt1: 333.500000ms, tt2: 454.000000ms, diff: 1.361858
  • mimalloc
    Average: tt1: 300.800000ms, tt2: 397.100000ms, diff: 1.32032

Time reduced: 9.8% and 12.5%

Node Duplicate

from #91230

  • master: 2226 ms
  • mimalloc: 1731 ms

Time reduced: 22.2%

Loading RichTextLabel with lots of Text

from #96475
command: time .\godot.windows.editor.x86_64.exe --path ".\RichTextLabel\" --quit

  • master: 10.52 s
  • mimalloc: 8.80 s

Time reduced: 16.3%

Button and Label Instantiate

from #71182
increase button count to 10000

  • master: 3000 +- 15ms
  • mimaloc: 2565 +- 10ms

Time reduced: 14.5%

Empty Project Open

command: time .\godot.windows.editor.x86_64.exe --editor --path "./emptyProject" --quit

  • master: 6.84 s
  • mimalloc: 6.31 s

Time reduced: 7.7%

All tests repeated at least 3 times and ensure results are stable.

Edit: Test Projects: TestProjects.zip

Copy link
Member

@Calinou Calinou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested locally, it works as expected.

Benchmark

PC specifications
  • CPU: Intel Core i9-13900K
  • GPU: NVIDIA GeForce RTX 4090
  • RAM: 64 GB (2×32 GB DDR5-5800 C30)
  • SSD: Solidigm P44 Pro 2 TB
  • OS: Linux (Fedora 41)

Running all benchmarks from https://github.com/godotengine/godot-benchmarks. Using a release export template with production=yes lto=full.

Overall, this PR is significantly faster in many benchmarks, although it loses out a bit on some benchmarks too.

a: master (67,599,960 bytes)
b: This PR (67,663,032 bytes)

Lower is better (which means a_div_b > 1.0 is an improvement, < 1.0 is a regression).

Click to show JSON result
{
	"category": "C++ > Alloc",
	"name": "Deep Tree",
	"results": {
		"time": {
			"a": 148.3,
			"b": 108.4,
			"a_div_b": 1.368081180811808
		}
	}
}
{
	"category": "C++ > Alloc",
	"name": "Duplicate",
	"results": {
		"time": {
			"a": 812.6,
			"b": 664.1,
			"a_div_b": 1.2236109019725945
		}
	}
}
{
	"category": "C++ > Alloc",
	"name": "Fragmentation",
	"results": {
		"time": {
			"a": 1953.0,
			"b": 1211.0,
			"a_div_b": 1.6127167630057804
		}
	}
}
{
	"category": "C++ > Alloc",
	"name": "Wide Tree",
	"results": {
		"time": {
			"a": 108.4,
			"b": 69.91,
			"a_div_b": 1.5505650121584897
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Color Array",
	"results": {
		"time": {
			"a": 56.15,
			"b": 72.84,
			"a_div_b": 0.7708676551345414
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Fill Loop",
	"results": {
		"time": {
			"a": 0.005,
			"b": 0.003,
			"a_div_b": 1.6666666666666667
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Float 32 Array",
	"results": {
		"time": {
			"a": 62.06,
			"b": 73.2,
			"a_div_b": 0.8478142076502733
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Float 64 Array",
	"results": {
		"time": {
			"a": 61.94,
			"b": 73.5,
			"a_div_b": 0.8427210884353741
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Int 32 Array",
	"results": {
		"time": {
			"a": 55.75,
			"b": 83.47,
			"a_div_b": 0.66790463639631
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Int 64 Array",
	"results": {
		"time": {
			"a": 56.08,
			"b": 69.19,
			"a_div_b": 0.8105217516982223
		}
	}
}
{
	"category": "C++ > Array",
	"name": "String Array",
	"results": {
		"time": {
			"a": 654.5,
			"b": 549.4,
			"a_div_b": 1.19129959956316
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Vector 2 Array",
	"results": {
		"time": {
			"a": 57.29,
			"b": 69.24,
			"a_div_b": 0.8274119006354709
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Vector 3 Array",
	"results": {
		"time": {
			"a": 55.91,
			"b": 56.65,
			"a_div_b": 0.98693733451015
		}
	}
}
{
	"category": "C++ > Array",
	"name": "Vector 4 Array",
	"results": {
		"time": {
			"a": 54.21,
			"b": 56.07,
			"a_div_b": 0.9668271803103264
		}
	}
}
{
	"category": "C++ > Binary Trees",
	"name": "Binary Trees 13",
	"results": {
		"time": {
			"a": 23.3,
			"b": 23.09,
			"a_div_b": 1.0090948462537896
		}
	}
}
{
	"category": "C++ > Binary Trees",
	"name": "Binary Trees 15",
	"results": {
		"time": {
			"a": 111.1,
			"b": 110.2,
			"a_div_b": 1.0081669691470054
		}
	}
}
{
	"category": "C++ > Binary Trees",
	"name": "Binary Trees 18",
	"results": {
		"time": {
			"a": 1027.0,
			"b": 1024.0,
			"a_div_b": 1.0029296875
		}
	}
}
{
	"category": "C++ > Control",
	"name": "Control",
	"results": {
		"time": {
			"a": 0.004,
			"b": 0.004,
			"a_div_b": 1
		}
	}
}
{
	"category": "C++ > For Loop",
	"name": "Loop Add",
	"results": {
		"time": {
			"a": 0.002,
			"b": 0.002,
			"a_div_b": 1
		}
	}
}
{
	"category": "C++ > For Loop",
	"name": "Loop Call",
	"results": {
		"time": {
			"a": 0.002,
			"b": 0.002,
			"a_div_b": 1
		}
	}
}
{
	"category": "C++ > Hello World",
	"name": "Hello World",
	"results": {
		"time": {
			"a": 0.009,
			"b": 0.006,
			"a_div_b": 1.4999999999999998
		}
	}
}
{
	"category": "C++ > Lambda Performance",
	"name": "Lambda Call",
	"results": {
		"time": {
			"a": 0.002,
			"b": 0.001,
			"a_div_b": 2
		}
	}
}
{
	"category": "C++ > Mandelbrot Set",
	"name": "Mandelbrot Set",
	"results": {
		"time": {
			"a": 81.58,
			"b": 81.22,
			"a_div_b": 1.0044324058113765
		}
	}
}
{
	"category": "C++ > Merkle Trees",
	"name": "Merkle Trees 13",
	"results": {
		"time": {
			"a": 24.94,
			"b": 28.92,
			"a_div_b": 0.8623789764868603
		}
	}
}
{
	"category": "C++ > Merkle Trees",
	"name": "Merkle Trees 15",
	"results": {
		"time": {
			"a": 120.5,
			"b": 116.9,
			"a_div_b": 1.0307955517536356
		}
	}
}
{
	"category": "C++ > Merkle Trees",
	"name": "Merkle Trees 18",
	"results": {
		"time": {
			"a": 1149.0,
			"b": 1106.0,
			"a_div_b": 1.038878842676311
		}
	}
}
{
	"category": "C++ > Nbody",
	"name": "Nbody 1 000 000",
	"results": {
		"time": {
			"a": 30.03,
			"b": 31.51,
			"a_div_b": 0.9530307838781339
		}
	}
}
{
	"category": "C++ > Nbody",
	"name": "Nbody 500 000",
	"results": {
		"time": {
			"a": 15.02,
			"b": 18.09,
			"a_div_b": 0.8302929795467109
		}
	}
}
{
	"category": "C++ > Spectral Norm",
	"name": "Spectral Norm 100",
	"results": {
		"time": {
			"a": 0.299,
			"b": 0.783,
			"a_div_b": 0.38186462324393355
		}
	}
}
{
	"category": "C++ > Spectral Norm",
	"name": "Spectral Norm 1000",
	"results": {
		"time": {
			"a": 29.16,
			"b": 31.79,
			"a_div_b": 0.9172695816294433
		}
	}
}
{
	"category": "C++ > Spectral Norm",
	"name": "Spectral Norm 500",
	"results": {
		"time": {
			"a": 7.3,
			"b": 10.63,
			"a_div_b": 0.6867356538099717
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Md 5 Buffer Empty",
	"results": {
		"time": {
			"a": 100.2,
			"b": 102.6,
			"a_div_b": 0.976608187134503
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Md 5 Buffer Non Empty",
	"results": {
		"time": {
			"a": 400.2,
			"b": 396.4,
			"a_div_b": 1.0095862764883956
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Md 5 Text Empty",
	"results": {
		"time": {
			"a": 102.8,
			"b": 101.2,
			"a_div_b": 1.0158102766798418
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Md 5 Text Non Empty",
	"results": {
		"time": {
			"a": 402.0,
			"b": 395.8,
			"a_div_b": 1.01566447700859
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 1 Buffer Empty",
	"results": {
		"time": {
			"a": 89.57,
			"b": 89.94,
			"a_div_b": 0.9958861463197687
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 1 Buffer Non Empty",
	"results": {
		"time": {
			"a": 367.4,
			"b": 360.9,
			"a_div_b": 1.0180105292324744
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 1 Text Empty",
	"results": {
		"time": {
			"a": 94.77,
			"b": 94.41,
			"a_div_b": 1.003813155386082
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 1 Text Non Empty",
	"results": {
		"time": {
			"a": 373.7,
			"b": 369.0,
			"a_div_b": 1.0127371273712737
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 256 Buffer Empty",
	"results": {
		"time": {
			"a": 165.9,
			"b": 166.8,
			"a_div_b": 0.9946043165467625
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 256 Buffer Non Empty",
	"results": {
		"time": {
			"a": 649.7,
			"b": 643.7,
			"a_div_b": 1.0093211123194035
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 256 Text Empty",
	"results": {
		"time": {
			"a": 175.1,
			"b": 172.2,
			"a_div_b": 1.0168408826945412
		}
	}
}
{
	"category": "C++ > String Checksum",
	"name": "Sha 256 Text Non Empty",
	"results": {
		"time": {
			"a": 658.5,
			"b": 652.4,
			"a_div_b": 1.0093500919681178
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Complex Variable Concatenate",
	"results": {
		"time": {
			"a": 1397.0,
			"b": 1178.0,
			"a_div_b": 1.1859083191850595
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Complex Variable Method",
	"results": {
		"time": {
			"a": 2291.0,
			"b": 1990.0,
			"a_div_b": 1.1512562814070353
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Complex Variable Percent",
	"results": {
		"time": {
			"a": 1671.0,
			"b": 1347.0,
			"a_div_b": 1.2405345211581291
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "No Op Constant Method",
	"results": {
		"time": {
			"a": 115.9,
			"b": 110.4,
			"a_div_b": 1.0498188405797102
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Constant Concatenate",
	"results": {
		"time": {
			"a": 166.8,
			"b": 143.2,
			"a_div_b": 1.1648044692737431
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Constant Method",
	"results": {
		"time": {
			"a": 430.9,
			"b": 417.2,
			"a_div_b": 1.0328379674017258
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Constant Method Constant Dict",
	"results": {
		"time": {
			"a": 276.3,
			"b": 261.6,
			"a_div_b": 1.0561926605504586
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Constant Percent",
	"results": {
		"time": {
			"a": 276.5,
			"b": 194.6,
			"a_div_b": 1.420863309352518
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Variable Concatenate",
	"results": {
		"time": {
			"a": 166.9,
			"b": 144.6,
			"a_div_b": 1.1542185338865838
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Variable Method",
	"results": {
		"time": {
			"a": 437.7,
			"b": 423.2,
			"a_div_b": 1.0342627599243857
		}
	}
}
{
	"category": "C++ > String Format",
	"name": "Simple Variable Percent",
	"results": {
		"time": {
			"a": 276.7,
			"b": 194.8,
			"a_div_b": 1.4204312114989732
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Begins With",
	"results": {
		"time": {
			"a": 38.13,
			"b": 34.66,
			"a_div_b": 1.100115406809002
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Bigrams",
	"results": {
		"time": {
			"a": 563.4,
			"b": 443.8,
			"a_div_b": 1.2694907616043263
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Capitalize",
	"results": {
		"time": {
			"a": 878.7,
			"b": 832.7,
			"a_div_b": 1.0552419839077698
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Casecmp To",
	"results": {
		"time": {
			"a": 38.52,
			"b": 41.06,
			"a_div_b": 0.9381393083292743
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Contains",
	"results": {
		"time": {
			"a": 38.62,
			"b": 42.06,
			"a_div_b": 0.9182120779838325
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Count",
	"results": {
		"time": {
			"a": 139.5,
			"b": 129.2,
			"a_div_b": 1.0797213622291022
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Countn",
	"results": {
		"time": {
			"a": 282.3,
			"b": 274.6,
			"a_div_b": 1.028040786598689
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Ends With",
	"results": {
		"time": {
			"a": 41.38,
			"b": 35.08,
			"a_div_b": 1.1795895096921325
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Find",
	"results": {
		"time": {
			"a": 41.4,
			"b": 35.0,
			"a_div_b": 1.1828571428571428
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Findn",
	"results": {
		"time": {
			"a": 59.84,
			"b": 56.71,
			"a_div_b": 1.0551930876388644
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Get Slice",
	"results": {
		"time": {
			"a": 85.58,
			"b": 85.8,
			"a_div_b": 0.9974358974358974
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Get Slice Count",
	"results": {
		"time": {
			"a": 53.47,
			"b": 48.08,
			"a_div_b": 1.1121048252911814
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Humanize Size",
	"results": {
		"time": {
			"a": 531.6,
			"b": 481.3,
			"a_div_b": 1.1045086224807812
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Insert",
	"results": {
		"time": {
			"a": 76.02,
			"b": 73.97,
			"a_div_b": 1.0277139380830065
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Is Valid Filename",
	"results": {
		"time": {
			"a": 676.5,
			"b": 503.2,
			"a_div_b": 1.34439586645469
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Lpad",
	"results": {
		"time": {
			"a": 186.6,
			"b": 133.4,
			"a_div_b": 1.3988005997001498
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Naturalnocasecmp To",
	"results": {
		"time": {
			"a": 39.1,
			"b": 36.65,
			"a_div_b": 1.0668485675306958
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Nocasecmp To",
	"results": {
		"time": {
			"a": 59.07,
			"b": 55.16,
			"a_div_b": 1.070884699057288
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Pad Decimals",
	"results": {
		"time": {
			"a": 334.9,
			"b": 329.0,
			"a_div_b": 1.017933130699088
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Pad Decimals Pre Constructed",
	"results": {
		"time": {
			"a": 67.38,
			"b": 65.26,
			"a_div_b": 1.0324854428440084
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Pad Zeros",
	"results": {
		"time": {
			"a": 261.1,
			"b": 232.1,
			"a_div_b": 1.12494614390349
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Pad Zeros Pre Constructed",
	"results": {
		"time": {
			"a": 142.9,
			"b": 118.2,
			"a_div_b": 1.2089678510998307
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Rfind",
	"results": {
		"time": {
			"a": 42.83,
			"b": 39.27,
			"a_div_b": 1.09065444359562
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Rfindn",
	"results": {
		"time": {
			"a": 152.1,
			"b": 148.7,
			"a_div_b": 1.0228648285137862
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Rpad",
	"results": {
		"time": {
			"a": 136.3,
			"b": 108.5,
			"a_div_b": 1.2562211981566822
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Rsplit",
	"results": {
		"time": {
			"a": 301.6,
			"b": 223.2,
			"a_div_b": 1.3512544802867386
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Similarity",
	"results": {
		"time": {
			"a": 524.8,
			"b": 444.4,
			"a_div_b": 1.1809180918091808
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Simplify Path",
	"results": {
		"time": {
			"a": 812.6,
			"b": 684.7,
			"a_div_b": 1.1867971374324522
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Split",
	"results": {
		"time": {
			"a": 269.1,
			"b": 190.5,
			"a_div_b": 1.4125984251968504
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Split Floats",
	"results": {
		"time": {
			"a": 158.8,
			"b": 127.4,
			"a_div_b": 1.2464678178963893
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Substr",
	"results": {
		"time": {
			"a": 59.02,
			"b": 56.66,
			"a_div_b": 1.0416519590540065
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Camel Case",
	"results": {
		"time": {
			"a": 604.4,
			"b": 603.7,
			"a_div_b": 1.001159516316051
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Lower",
	"results": {
		"time": {
			"a": 160.1,
			"b": 156.8,
			"a_div_b": 1.0210459183673468
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Pascal Case",
	"results": {
		"time": {
			"a": 946.9,
			"b": 888.7,
			"a_div_b": 1.0654889163947339
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Snake Case",
	"results": {
		"time": {
			"a": 785.3,
			"b": 714.9,
			"a_div_b": 1.0984753112323402
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Utf 16 Buffer",
	"results": {
		"time": {
			"a": 84.38,
			"b": 78.71,
			"a_div_b": 1.0720365900139754
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Utf 32 Buffer",
	"results": {
		"time": {
			"a": 57.93,
			"b": 54.04,
			"a_div_b": 1.0719837157660992
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Utf 8 Buffer",
	"results": {
		"time": {
			"a": 84.92,
			"b": 78.88,
			"a_div_b": 1.0765720081135903
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "To Wchar Buffer",
	"results": {
		"time": {
			"a": 58.04,
			"b": 53.57,
			"a_div_b": 1.0834422251260034
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Uri Decode",
	"results": {
		"time": {
			"a": 220.2,
			"b": 194.5,
			"a_div_b": 1.132133676092545
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Uri Encode",
	"results": {
		"time": {
			"a": 244.6,
			"b": 170.4,
			"a_div_b": 1.4354460093896713
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Validate Filename",
	"results": {
		"time": {
			"a": 1087.0,
			"b": 878.0,
			"a_div_b": 1.2380410022779043
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Validate Node Name",
	"results": {
		"time": {
			"a": 88.93,
			"b": 80.87,
			"a_div_b": 1.0996661308272537
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Xml Escape",
	"results": {
		"time": {
			"a": 255.5,
			"b": 244.9,
			"a_div_b": 1.0432829726418946
		}
	}
}
{
	"category": "C++ > String Manipulation",
	"name": "Xml Unescape",
	"results": {
		"time": {
			"a": 67.07,
			"b": 72.17,
			"a_div_b": 0.9293335180823056
		}
	}
}
{
	"category": "Animation > Animated Models",
	"name": "Animation Blend Tree 100",
	"results": {
		"render_cpu": {
			"a": 0.6486,
			"b": 0.7216,
			"a_div_b": 0.8988359201773835
		},
		"render_gpu": {
			"a": 0.5495,
			"b": 0.5768,
			"a_div_b": 0.9526699029126213
		},
		"time": {
			"a": 0.011,
			"b": 0.012,
			"a_div_b": 0.9166666666666666
		}
	}
}
{
	"category": "Animation > Animated Models",
	"name": "Animation State Machine 1000",
	"results": {
		"render_cpu": {
			"a": 4.341,
			"b": 3.434,
			"a_div_b": 1.2641234711706464
		},
		"render_gpu": {
			"a": 4.0,
			"b": 3.515,
			"a_div_b": 1.1379800853485063
		},
		"time": {
			"a": 0.011,
			"b": 0.006,
			"a_div_b": 1.8333333333333333
		}
	}
}
{
	"category": "Animation > Tween",
	"name": "Animate 1000 Tween Methods",
	"results": {
		"render_cpu": {
			"a": 0.04905,
			"b": 0.04824,
			"a_div_b": 1.0167910447761195
		},
		"time": {
			"a": 2.16,
			"b": 1.633,
			"a_div_b": 1.3227189222290263
		}
	}
}
{
	"category": "Animation > Tween",
	"name": "Tween 100 Properties",
	"results": {
		"render_cpu": {
			"a": 0.009729,
			"b": 0.009266,
			"a_div_b": 1.049967623570041
		},
		"time": {
			"a": 0.216,
			"b": 0.172,
			"a_div_b": 1.255813953488372
		}
	}
}
{
	"category": "Asset Import Export > Runtime",
	"name": "Export Gltf",
	"results": {
		"time": {
			"a": 70.1,
			"b": 48.6,
			"a_div_b": 1.44238683127572
		}
	}
}
{
	"category": "Asset Import Export > Runtime",
	"name": "Import Fbx",
	"results": {
		"time": {
			"a": 366.4,
			"b": 400.1,
			"a_div_b": 0.915771057235691
		}
	}
}
{
	"category": "Asset Import Export > Runtime",
	"name": "Import Gltf",
	"results": {
		"time": {
			"a": 16.22,
			"b": 20.59,
			"a_div_b": 0.7877610490529383
		}
	}
}
{
	"category": "Asset Import Export > Runtime",
	"name": "Import Ogg Audio",
	"results": {
		"time": {
			"a": 2.427,
			"b": 2.335,
			"a_div_b": 1.0394004282655247
		}
	}
}
{
	"category": "Asset Import Export > Runtime",
	"name": "Import Webp Images",
	"results": {
		"time": {
			"a": 310.2,
			"b": 321.9,
			"a_div_b": 0.9636533084808947
		}
	}
}
{
	"category": "Core > Array",
	"name": "Append Array",
	"results": {
		"time": {
			"a": 144.7,
			"b": 208.9,
			"a_div_b": 0.6926759214935375
		}
	}
}
{
	"category": "Core > Array",
	"name": "Bsearch",
	"results": {
		"time": {
			"a": 45.59,
			"b": 44.7,
			"a_div_b": 1.019910514541387
		}
	}
}
{
	"category": "Core > Array",
	"name": "Fill",
	"results": {
		"time": {
			"a": 40.51,
			"b": 40.71,
			"a_div_b": 0.9950872021616309
		}
	}
}
{
	"category": "Core > Array",
	"name": "Reverse",
	"results": {
		"time": {
			"a": 35.61,
			"b": 36.1,
			"a_div_b": 0.9864265927977839
		}
	}
}
{
	"category": "Core > Callable",
	"name": "Function Callable",
	"results": {
		"time": {
			"a": 275.1,
			"b": 251.8,
			"a_div_b": 1.0925337569499602
		}
	}
}
{
	"category": "Core > Callable",
	"name": "Lambda Inline Callable",
	"results": {
		"time": {
			"a": 236.0,
			"b": 224.3,
			"a_div_b": 1.0521622826571555
		}
	}
}
{
	"category": "Core > Callable",
	"name": "Lambda Variable Callable",
	"results": {
		"time": {
			"a": 57.02,
			"b": 56.07,
			"a_div_b": 1.0169431068307473
		}
	}
}
{
	"category": "Core > Config File",
	"name": "Load",
	"results": {
		"time": {
			"a": 20.46,
			"b": 15.63,
			"a_div_b": 1.309021113243762
		}
	}
}
{
	"category": "Core > Config File",
	"name": "Load With Password",
	"results": {
		"time": {
			"a": 21.92,
			"b": 17.27,
			"a_div_b": 1.269253039953677
		}
	}
}
{
	"category": "Core > Config File",
	"name": "Save",
	"results": {
		"time": {
			"a": 24.56,
			"b": 18.87,
			"a_div_b": 1.3015368309485955
		}
	}
}
{
	"category": "Core > Config File",
	"name": "Save With Password",
	"results": {
		"time": {
			"a": 26.2,
			"b": 20.34,
			"a_div_b": 1.2881022615535889
		}
	}
}
{
	"category": "Core > Crypto",
	"name": "Generate 1g Random Bytes 1k At A Time",
	"results": {
		"time": {
			"a": 1449.0,
			"b": 1436.0,
			"a_div_b": 1.0090529247910864
		}
	}
}
{
	"category": "Core > Crypto",
	"name": "Generate 1m Random Bytes 10 At A Time",
	"results": {
		"time": {
			"a": 6540.0,
			"b": 6359.0,
			"a_div_b": 1.0284635949048593
		}
	}
}
{
	"category": "Core > Crypto",
	"name": "Generate Rsa 2048",
	"results": {
		"time": {
			"a": 87.42,
			"b": 130.2,
			"a_div_b": 0.6714285714285715
		}
	}
}
{
	"category": "Core > Crypto",
	"name": "Generate Rsa 4096",
	"results": {
		"time": {
			"a": 167.4,
			"b": 1693.0,
			"a_div_b": 0.09887773183697579
		}
	}
}
{
	"category": "Core > Node Path",
	"name": "Create",
	"results": {
		"time": {
			"a": 12.01,
			"b": 13.7,
			"a_div_b": 0.8766423357664234
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "12 Threads Full Contention",
	"results": {
		"time": {
			"a": 664.1,
			"b": 670.0,
			"a_div_b": 0.9911940298507463
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "12 Threads Half Contention",
	"results": {
		"time": {
			"a": 346.5,
			"b": 341.8,
			"a_div_b": 1.013750731421884
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "12 Threads Little Contention",
	"results": {
		"time": {
			"a": 79.76,
			"b": 74.17,
			"a_div_b": 1.0753673992180126
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "12 Threads Slope Contention",
	"results": {
		"time": {
			"a": 374.7,
			"b": 360.2,
			"a_div_b": 1.0402554136590783
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "2 Threads Full Contention",
	"results": {
		"time": {
			"a": 49.46,
			"b": 53.52,
			"a_div_b": 0.9241405082212256
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "2 Threads Half Contention",
	"results": {
		"time": {
			"a": 32.37,
			"b": 33.89,
			"a_div_b": 0.9551490115078193
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "2 Threads Little Contention",
	"results": {
		"time": {
			"a": 18.33,
			"b": 14.68,
			"a_div_b": 1.2486376021798364
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "4 Threads Full Contention",
	"results": {
		"time": {
			"a": 152.7,
			"b": 140.1,
			"a_div_b": 1.0899357601713062
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "4 Threads Half Contention",
	"results": {
		"time": {
			"a": 81.32,
			"b": 80.47,
			"a_div_b": 1.0105629427115694
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "4 Threads Little Contention",
	"results": {
		"time": {
			"a": 26.93,
			"b": 29.01,
			"a_div_b": 0.9283005860048259
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "4 Threads Slope Contention",
	"results": {
		"time": {
			"a": 114.4,
			"b": 109.9,
			"a_div_b": 1.040946314831665
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "8 Threads Full Contention",
	"results": {
		"time": {
			"a": 363.7,
			"b": 371.2,
			"a_div_b": 0.9797952586206896
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "8 Threads Half Contention",
	"results": {
		"time": {
			"a": 205.6,
			"b": 191.8,
			"a_div_b": 1.0719499478623564
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "8 Threads Little Contention",
	"results": {
		"time": {
			"a": 48.26,
			"b": 46.63,
			"a_div_b": 1.0349560368861248
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "8 Threads Slope Contention",
	"results": {
		"time": {
			"a": 228.0,
			"b": 220.1,
			"a_div_b": 1.0358927760109042
		}
	}
}
{
	"category": "Core > Object Db",
	"name": "Single",
	"results": {
		"time": {
			"a": 16.1,
			"b": 9.89,
			"a_div_b": 1.627906976744186
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randf",
	"results": {
		"time": {
			"a": 46.14,
			"b": 46.21,
			"a_div_b": 0.9984851763687513
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randf Range",
	"results": {
		"time": {
			"a": 103.3,
			"b": 92.3,
			"a_div_b": 1.1191765980498376
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randfn",
	"results": {
		"time": {
			"a": 307.5,
			"b": 308.4,
			"a_div_b": 0.9970817120622569
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randi",
	"results": {
		"time": {
			"a": 45.08,
			"b": 44.97,
			"a_div_b": 1.0024460751612185
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randi Range",
	"results": {
		"time": {
			"a": 74.5,
			"b": 74.23,
			"a_div_b": 1.0036373433921595
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Global Scope Randomize",
	"results": {
		"time": {
			"a": 328.6,
			"b": 327.8,
			"a_div_b": 1.0024405125076266
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randf",
	"results": {
		"time": {
			"a": 71.64,
			"b": 72.84,
			"a_div_b": 0.9835255354200988
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randf Range",
	"results": {
		"time": {
			"a": 90.9,
			"b": 90.22,
			"a_div_b": 1.0075371314564399
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randfn",
	"results": {
		"time": {
			"a": 248.1,
			"b": 252.9,
			"a_div_b": 0.9810201660735468
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randi",
	"results": {
		"time": {
			"a": 48.45,
			"b": 46.9,
			"a_div_b": 1.0330490405117272
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randi Range",
	"results": {
		"time": {
			"a": 65.18,
			"b": 67.99,
			"a_div_b": 0.9586703927048097
		}
	}
}
{
	"category": "Core > Random Number Generator",
	"name": "Randomize",
	"results": {
		"time": {
			"a": 342.0,
			"b": 340.8,
			"a_div_b": 1.0035211267605633
		}
	}
}
{
	"category": "Core > Signal",
	"name": "Emission Params 0",
	"results": {
		"time": {
			"a": 157.7,
			"b": 158.6,
			"a_div_b": 0.9943253467843631
		}
	}
}
{
	"category": "Core > Signal",
	"name": "Emission Params 1",
	"results": {
		"time": {
			"a": 152.8,
			"b": 163.6,
			"a_div_b": 0.9339853300733497
		}
	}
}
{
	"category": "Core > Signal",
	"name": "Emission Params 10",
	"results": {
		"time": {
			"a": 173.9,
			"b": 175.0,
			"a_div_b": 0.9937142857142858
		}
	}
}
{
	"category": "Core > String Name",
	"name": "Create",
	"results": {
		"time": {
			"a": 13.07,
			"b": 12.43,
			"a_div_b": 1.0514883346741755
		}
	}
}
{
	"category": "Gdscript > Alloc",
	"name": "Deep Tree",
	"results": {
		"time": {
			"a": 122.0,
			"b": 98.28,
			"a_div_b": 1.2413512413512413
		}
	}
}
{
	"category": "Gdscript > Alloc",
	"name": "Duplicate",
	"results": {
		"time": {
			"a": 819.5,
			"b": 695.2,
			"a_div_b": 1.1787974683544302
		}
	}
}
{
	"category": "Gdscript > Alloc",
	"name": "Fragmentation",
	"results": {
		"time": {
			"a": 1745.0,
			"b": 1151.0,
			"a_div_b": 1.5160729800173762
		}
	}
}
{
	"category": "Gdscript > Alloc",
	"name": "Wide Tree",
	"results": {
		"time": {
			"a": 99.21,
			"b": 82.38,
			"a_div_b": 1.2042971595047343
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Fill Loop",
	"results": {
		"time": {
			"a": 175.3,
			"b": 173.1,
			"a_div_b": 1.0127094165222417
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Fill Method",
	"results": {
		"time": {
			"a": 86.28,
			"b": 41.43,
			"a_div_b": 2.0825488776249097
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Color Array",
	"results": {
		"time": {
			"a": 88.74,
			"b": 112.0,
			"a_div_b": 0.7923214285714285
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Float 32 Array",
	"results": {
		"time": {
			"a": 63.99,
			"b": 65.05,
			"a_div_b": 0.9837048424289009
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Float 64 Array",
	"results": {
		"time": {
			"a": 63.66,
			"b": 68.16,
			"a_div_b": 0.9339788732394366
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Int 32 Array",
	"results": {
		"time": {
			"a": 50.45,
			"b": 50.46,
			"a_div_b": 0.9998018232263179
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Int 64 Array",
	"results": {
		"time": {
			"a": 51.59,
			"b": 55.37,
			"a_div_b": 0.9317319848293301
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed String Array",
	"results": {
		"time": {
			"a": 428.0,
			"b": 370.4,
			"a_div_b": 1.1555075593952484
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Vector 2 Array",
	"results": {
		"time": {
			"a": 77.14,
			"b": 81.04,
			"a_div_b": 0.9518756169792695
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Packed Vector 3 Array",
	"results": {
		"time": {
			"a": 88.2,
			"b": 93.37,
			"a_div_b": 0.9446288957909392
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed Color Array",
	"results": {
		"time": {
			"a": 115.1,
			"b": 147.8,
			"a_div_b": 0.7787550744248984
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed Float Array",
	"results": {
		"time": {
			"a": 90.55,
			"b": 102.8,
			"a_div_b": 0.8808365758754864
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed Int Array",
	"results": {
		"time": {
			"a": 86.8,
			"b": 105.5,
			"a_div_b": 0.8227488151658767
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed String Array",
	"results": {
		"time": {
			"a": 482.7,
			"b": 432.1,
			"a_div_b": 1.1171025225642213
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed Vector 2 Array",
	"results": {
		"time": {
			"a": 106.5,
			"b": 111.4,
			"a_div_b": 0.9560143626570915
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Typed Vector 3 Array",
	"results": {
		"time": {
			"a": 122.0,
			"b": 143.6,
			"a_div_b": 0.8495821727019499
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped Color Array",
	"results": {
		"time": {
			"a": 188.5,
			"b": 205.0,
			"a_div_b": 0.9195121951219513
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped Float Array",
	"results": {
		"time": {
			"a": 167.2,
			"b": 174.1,
			"a_div_b": 0.9603676048248133
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped Int Array",
	"results": {
		"time": {
			"a": 160.0,
			"b": 162.4,
			"a_div_b": 0.9852216748768473
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped String Array",
	"results": {
		"time": {
			"a": 549.7,
			"b": 526.5,
			"a_div_b": 1.044064577397911
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped Vector 2 Array",
	"results": {
		"time": {
			"a": 182.5,
			"b": 182.5,
			"a_div_b": 1
		}
	}
}
{
	"category": "Gdscript > Array",
	"name": "Untyped Vector 3 Array",
	"results": {
		"time": {
			"a": 184.4,
			"b": 193.4,
			"a_div_b": 0.953464322647363
		}
	}
}
{
	"category": "Gdscript > Binary Trees",
	"name": "Binary Trees 13",
	"results": {
		"time": {
			"a": 396.4,
			"b": 366.3,
			"a_div_b": 1.0821730821730822
		}
	}
}
{
	"category": "Gdscript > Binary Trees",
	"name": "Binary Trees 15",
	"results": {
		"time": {
			"a": 1897.0,
			"b": 1747.0,
			"a_div_b": 1.0858614768174013
		}
	}
}
{
	"category": "Gdscript > Control",
	"name": "Control",
	"results": {
		"time": {
			"a": 0.006,
			"b": 0.003,
			"a_div_b": 2
		}
	}
}
{
	"category": "Gdscript > For Loop",
	"name": "For Loop Add",
	"results": {
		"time": {
			"a": 4.635,
			"b": 4.819,
			"a_div_b": 0.9618178045237601
		}
	}
}
{
	"category": "Gdscript > For Loop",
	"name": "For Loop Call",
	"results": {
		"time": {
			"a": 44.0,
			"b": 34.7,
			"a_div_b": 1.2680115273775214
		}
	}
}
{
	"category": "Gdscript > Hello World",
	"name": "Hello World",
	"results": {
		"time": {
			"a": 0.016,
			"b": 0.01,
			"a_div_b": 1.6
		}
	}
}
{
	"category": "Gdscript > Lambda Performance",
	"name": "Lambda Call",
	"results": {
		"time": {
			"a": 27.81,
			"b": 29.99,
			"a_div_b": 0.9273091030343448
		}
	}
}
{
	"category": "Gdscript > Mandelbrot Set",
	"name": "Mandelbrot Set",
	"results": {
		"time": {
			"a": 1635.0,
			"b": 1665.0,
			"a_div_b": 0.9819819819819819
		}
	}
}
{
	"category": "Gdscript > Merkle Trees",
	"name": "Merkle Trees 13",
	"results": {
		"time": {
			"a": 981.5,
			"b": 884.6,
			"a_div_b": 1.1095410354962694
		}
	}
}
{
	"category": "Gdscript > Merkle Trees",
	"name": "Merkle Trees 15",
	"results": {
		"time": {
			"a": 4933.0,
			"b": 4359.0,
			"a_div_b": 1.131681578343657
		}
	}
}
{
	"category": "Gdscript > Nbody",
	"name": "Nbody 1 000 000",
	"results": {
		"time": {
			"a": 3679.0,
			"b": 3628.0,
			"a_div_b": 1.0140573318632855
		}
	}
}
{
	"category": "Gdscript > Nbody",
	"name": "Nbody 500 000",
	"results": {
		"time": {
			"a": 1824.0,
			"b": 1834.0,
			"a_div_b": 0.9945474372955289
		}
	}
}
{
	"category": "Gdscript > Spectral Norm",
	"name": "Spectral Norm 100",
	"results": {
		"time": {
			"a": 30.9,
			"b": 31.5,
			"a_div_b": 0.9809523809523809
		}
	}
}
{
	"category": "Gdscript > Spectral Norm",
	"name": "Spectral Norm 1000",
	"results": {
		"time": {
			"a": 3043.0,
			"b": 3091.0,
			"a_div_b": 0.9844710449692656
		}
	}
}
{
	"category": "Gdscript > Spectral Norm",
	"name": "Spectral Norm 500",
	"results": {
		"time": {
			"a": 764.8,
			"b": 780.4,
			"a_div_b": 0.9800102511532547
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Md 5 Buffer Empty",
	"results": {
		"time": {
			"a": 116.4,
			"b": 112.0,
			"a_div_b": 1.0392857142857144
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Md 5 Buffer Non Empty",
	"results": {
		"time": {
			"a": 418.2,
			"b": 404.6,
			"a_div_b": 1.0336134453781511
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Md 5 Text Empty",
	"results": {
		"time": {
			"a": 101.9,
			"b": 100.3,
			"a_div_b": 1.0159521435692922
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Md 5 Text Non Empty",
	"results": {
		"time": {
			"a": 405.6,
			"b": 394.5,
			"a_div_b": 1.0281368821292776
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 1 Buffer Empty",
	"results": {
		"time": {
			"a": 105.9,
			"b": 105.2,
			"a_div_b": 1.0066539923954372
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 1 Buffer Non Empty",
	"results": {
		"time": {
			"a": 383.5,
			"b": 376.4,
			"a_div_b": 1.0188629117959618
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 1 Text Empty",
	"results": {
		"time": {
			"a": 94.42,
			"b": 91.36,
			"a_div_b": 1.033493870402802
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 1 Text Non Empty",
	"results": {
		"time": {
			"a": 376.9,
			"b": 362.8,
			"a_div_b": 1.038864388092613
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 256 Buffer Empty",
	"results": {
		"time": {
			"a": 181.8,
			"b": 181.2,
			"a_div_b": 1.0033112582781458
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 256 Buffer Non Empty",
	"results": {
		"time": {
			"a": 673.0,
			"b": 662.3,
			"a_div_b": 1.0161558206250945
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 256 Text Empty",
	"results": {
		"time": {
			"a": 172.0,
			"b": 172.2,
			"a_div_b": 0.9988385598141697
		}
	}
}
{
	"category": "Gdscript > String Checksum",
	"name": "Sha 256 Text Non Empty",
	"results": {
		"time": {
			"a": 659.0,
			"b": 655.6,
			"a_div_b": 1.0051860890787065
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Complex Variable Concatenate",
	"results": {
		"time": {
			"a": 1312.0,
			"b": 1025.0,
			"a_div_b": 1.28
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Complex Variable Method",
	"results": {
		"time": {
			"a": 1923.0,
			"b": 1814.0,
			"a_div_b": 1.0600882028665932
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Complex Variable Percent",
	"results": {
		"time": {
			"a": 1473.0,
			"b": 1165.0,
			"a_div_b": 1.2643776824034334
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "No Op Constant Method",
	"results": {
		"time": {
			"a": 118.7,
			"b": 116.6,
			"a_div_b": 1.0180102915951974
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Constant Concatenate",
	"results": {
		"time": {
			"a": 2.04,
			"b": 2.059,
			"a_div_b": 0.9907722195240407
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Constant Method",
	"results": {
		"time": {
			"a": 405.2,
			"b": 400.0,
			"a_div_b": 1.013
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Constant Method Constant Dict",
	"results": {
		"time": {
			"a": 270.4,
			"b": 259.4,
			"a_div_b": 1.0424055512721666
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Constant Percent",
	"results": {
		"time": {
			"a": 2.079,
			"b": 2.085,
			"a_div_b": 0.9971223021582735
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Variable Concatenate",
	"results": {
		"time": {
			"a": 131.8,
			"b": 111.7,
			"a_div_b": 1.179946284691137
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Variable Method",
	"results": {
		"time": {
			"a": 402.4,
			"b": 400.0,
			"a_div_b": 1.006
		}
	}
}
{
	"category": "Gdscript > String Format",
	"name": "Simple Variable Percent",
	"results": {
		"time": {
			"a": 240.8,
			"b": 181.5,
			"a_div_b": 1.3267217630853996
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Begins With",
	"results": {
		"time": {
			"a": 7.165,
			"b": 6.757,
			"a_div_b": 1.0603818262542548
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Bigrams",
	"results": {
		"time": {
			"a": 566.7,
			"b": 442.7,
			"a_div_b": 1.2800993901061668
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Capitalize",
	"results": {
		"time": {
			"a": 866.5,
			"b": 814.9,
			"a_div_b": 1.0633206528408394
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Casecmp To",
	"results": {
		"time": {
			"a": 6.659,
			"b": 6.036,
			"a_div_b": 1.1032140490390987
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Contains",
	"results": {
		"time": {
			"a": 8.431,
			"b": 8.462,
			"a_div_b": 0.9963365634601749
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Contains Gdscript In",
	"results": {
		"time": {
			"a": 2.071,
			"b": 2.022,
			"a_div_b": 1.024233432245302
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Count",
	"results": {
		"time": {
			"a": 127.3,
			"b": 119.3,
			"a_div_b": 1.0670578373847444
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Countn",
	"results": {
		"time": {
			"a": 267.7,
			"b": 262.8,
			"a_div_b": 1.0186453576864536
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Ends With",
	"results": {
		"time": {
			"a": 6.689,
			"b": 7.601,
			"a_div_b": 0.8800157873963952
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Find",
	"results": {
		"time": {
			"a": 27.9,
			"b": 28.25,
			"a_div_b": 0.9876106194690265
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Findn",
	"results": {
		"time": {
			"a": 45.44,
			"b": 45.0,
			"a_div_b": 1.0097777777777777
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Get Slice",
	"results": {
		"time": {
			"a": 50.07,
			"b": 49.79,
			"a_div_b": 1.0056236192006427
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Get Slice Count",
	"results": {
		"time": {
			"a": 23.91,
			"b": 24.69,
			"a_div_b": 0.9684082624544349
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Humanize Size",
	"results": {
		"time": {
			"a": 526.4,
			"b": 485.7,
			"a_div_b": 1.0837965822524191
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Insert",
	"results": {
		"time": {
			"a": 39.39,
			"b": 37.55,
			"a_div_b": 1.049001331557923
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Is Valid Filename",
	"results": {
		"time": {
			"a": 665.9,
			"b": 484.3,
			"a_div_b": 1.3749741895519305
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Lpad",
	"results": {
		"time": {
			"a": 142.6,
			"b": 99.84,
			"a_div_b": 1.4282852564102564
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Naturalnocasecmp To",
	"results": {
		"time": {
			"a": 8.471,
			"b": 6.826,
			"a_div_b": 1.2409903310870203
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Nocasecmp To",
	"results": {
		"time": {
			"a": 30.57,
			"b": 30.8,
			"a_div_b": 0.9925324675324675
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Pad Decimals",
	"results": {
		"time": {
			"a": 294.0,
			"b": 294.2,
			"a_div_b": 0.9993201903467029
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Pad Decimals Pre Constructed",
	"results": {
		"time": {
			"a": 50.32,
			"b": 48.35,
			"a_div_b": 1.0407445708376422
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Pad Zeros",
	"results": {
		"time": {
			"a": 241.5,
			"b": 201.6,
			"a_div_b": 1.1979166666666667
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Pad Zeros Pre Constructed",
	"results": {
		"time": {
			"a": 127.2,
			"b": 102.1,
			"a_div_b": 1.2458374142997062
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Rfind",
	"results": {
		"time": {
			"a": 29.52,
			"b": 29.22,
			"a_div_b": 1.0102669404517455
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Rfindn",
	"results": {
		"time": {
			"a": 141.0,
			"b": 140.6,
			"a_div_b": 1.0028449502133714
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Rpad",
	"results": {
		"time": {
			"a": 101.4,
			"b": 77.35,
			"a_div_b": 1.3109243697478994
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Rsplit",
	"results": {
		"time": {
			"a": 278.0,
			"b": 226.2,
			"a_div_b": 1.229000884173298
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Similarity",
	"results": {
		"time": {
			"a": 538.2,
			"b": 412.2,
			"a_div_b": 1.3056768558951966
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Simplify Path",
	"results": {
		"time": {
			"a": 795.9,
			"b": 661.9,
			"a_div_b": 1.2024474996222994
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Split",
	"results": {
		"time": {
			"a": 247.2,
			"b": 194.8,
			"a_div_b": 1.2689938398357288
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Split Floats",
	"results": {
		"time": {
			"a": 163.7,
			"b": 127.3,
			"a_div_b": 1.2859387274155538
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Substr",
	"results": {
		"time": {
			"a": 39.71,
			"b": 38.32,
			"a_div_b": 1.0362734864300627
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Camel Case",
	"results": {
		"time": {
			"a": 586.4,
			"b": 584.8,
			"a_div_b": 1.0027359781121752
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Lower",
	"results": {
		"time": {
			"a": 140.2,
			"b": 138.1,
			"a_div_b": 1.0152063721940623
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Pascal Case",
	"results": {
		"time": {
			"a": 922.9,
			"b": 872.7,
			"a_div_b": 1.0575226309155494
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Snake Case",
	"results": {
		"time": {
			"a": 750.9,
			"b": 697.1,
			"a_div_b": 1.0771768756276
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Utf 16 Buffer",
	"results": {
		"time": {
			"a": 83.93,
			"b": 78.57,
			"a_div_b": 1.0682194221713124
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Utf 32 Buffer",
	"results": {
		"time": {
			"a": 56.78,
			"b": 53.25,
			"a_div_b": 1.0662910798122065
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Utf 8 Buffer",
	"results": {
		"time": {
			"a": 84.08,
			"b": 79.47,
			"a_div_b": 1.0580093116899458
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "To Wchar Buffer",
	"results": {
		"time": {
			"a": 57.34,
			"b": 53.33,
			"a_div_b": 1.0751921995124696
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Uri Decode",
	"results": {
		"time": {
			"a": 206.8,
			"b": 178.6,
			"a_div_b": 1.1578947368421053
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Uri Encode",
	"results": {
		"time": {
			"a": 228.5,
			"b": 149.1,
			"a_div_b": 1.5325285043594903
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Validate Filename",
	"results": {
		"time": {
			"a": 1075.0,
			"b": 861.4,
			"a_div_b": 1.2479684234966335
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Validate Node Name",
	"results": {
		"time": {
			"a": 64.5,
			"b": 56.9,
			"a_div_b": 1.133567662565905
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Xml Escape",
	"results": {
		"time": {
			"a": 252.4,
			"b": 237.3,
			"a_div_b": 1.0636325326590812
		}
	}
}
{
	"category": "Gdscript > String Manipulation",
	"name": "Xml Unescape",
	"results": {
		"time": {
			"a": 44.53,
			"b": 42.25,
			"a_div_b": 1.0539644970414201
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Label",
	"results": {
		"render_cpu": {
			"a": 0.3044,
			"b": 0.3065,
			"a_div_b": 0.9931484502446982
		},
		"render_gpu": {
			"a": 0.1695,
			"b": 0.1703,
			"a_div_b": 0.995302407516148
		},
		"time": {
			"a": 0.072,
			"b": 0.07,
			"a_div_b": 1.0285714285714285
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Label Autowrap Arbitrary",
	"results": {
		"render_cpu": {
			"a": 0.3006,
			"b": 0.3188,
			"a_div_b": 0.9429109159347554
		},
		"render_gpu": {
			"a": 0.1577,
			"b": 0.1568,
			"a_div_b": 1.0057397959183674
		},
		"time": {
			"a": 0.069,
			"b": 0.095,
			"a_div_b": 0.7263157894736842
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Label Autowrap Smart",
	"results": {
		"render_cpu": {
			"a": 0.3033,
			"b": 0.3303,
			"a_div_b": 0.9182561307901909
		},
		"render_gpu": {
			"a": 0.1576,
			"b": 0.1566,
			"a_div_b": 1.0063856960408684
		},
		"time": {
			"a": 0.072,
			"b": 0.072,
			"a_div_b": 1
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Label Autowrap Word",
	"results": {
		"render_cpu": {
			"a": 0.2997,
			"b": 0.3345,
			"a_div_b": 0.8959641255605382
		},
		"render_gpu": {
			"a": 0.1575,
			"b": 0.1566,
			"a_div_b": 1.0057471264367817
		},
		"time": {
			"a": 0.074,
			"b": 0.086,
			"a_div_b": 0.8604651162790697
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Label Resize",
	"results": {
		"render_cpu": {
			"a": 0.3019,
			"b": 0.2988,
			"a_div_b": 1.0103748326639892
		},
		"render_gpu": {
			"a": 0.3563,
			"b": 0.3989,
			"a_div_b": 0.8932063173727752
		},
		"time": {
			"a": 0.068,
			"b": 0.069,
			"a_div_b": 0.9855072463768115
		}
	}
}
{
	"category": "Gui > Label",
	"name": "Rich Text Label",
	"results": {
		"render_cpu": {
			"a": 0.7698,
			"b": 0.8111,
			"a_div_b": 0.9490814942670448
		},
		"render_gpu": {
			"a": 0.2266,
			"b": 0.227,
			"a_div_b": 0.998237885462555
		},
		"time": {
			"a": 0.13,
			"b": 0.158,
			"a_div_b": 0.8227848101265823
		}
	}
}
{
	"category": "Math > Convex Hull 3d",
	"name": "Both Clean And Simplify",
	"results": {
		"time": {
			"a": 2520.0,
			"b": 2582.0,
			"a_div_b": 0.975987606506584
		}
	}
}
{
	"category": "Math > Convex Hull 3d",
	"name": "Only Clean",
	"results": {
		"time": {
			"a": 2516.0,
			"b": 2581.0,
			"a_div_b": 0.9748159628051143
		}
	}
}
{
	"category": "Math > Convex Hull 3d",
	"name": "Only Simplify",
	"results": {
		"time": {
			"a": 9.685,
			"b": 10.92,
			"a_div_b": 0.886904761904762
		}
	}
}
{
	"category": "Math > Convex Hull 3d",
	"name": "Quickest",
	"results": {
		"time": {
			"a": 5.908,
			"b": 7.754,
			"a_div_b": 0.7619293267990715
		}
	}
}
{
	"category": "Math > Delaunay 2d",
	"name": "Delaunay 2d",
	"results": {
		"time": {
			"a": 61.22,
			"b": 63.18,
			"a_div_b": 0.9689775245330801
		}
	}
}
{
	"category": "Math > Delaunay 3d",
	"name": "Delaunay 3d",
	"results": {
		"time": {
			"a": 344.1,
			"b": 158.2,
			"a_div_b": 2.1750948166877375
		}
	}
}
{
	"category": "Math > Expression",
	"name": "Parse 20 Complex Expressions Cold",
	"results": {
		"time": {
			"a": 262.1,
			"b": 242.4,
			"a_div_b": 1.0812706270627064
		}
	}
}
{
	"category": "Math > Expression",
	"name": "Parse 20 Complex Expressions With Cached Parse",
	"results": {
		"time": {
			"a": 259.8,
			"b": 240.6,
			"a_div_b": 1.0798004987531173
		}
	}
}
{
	"category": "Math > Expression",
	"name": "Parse 20 Complex Expressions With Cached Parse Then Execute",
	"results": {
		"time": {
			"a": 263.1,
			"b": 244.4,
			"a_div_b": 1.0765139116202946
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Cellular",
	"results": {
		"time": {
			"a": 442.5,
			"b": 442.0,
			"a_div_b": 1.001131221719457
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Perlin",
	"results": {
		"time": {
			"a": 208.8,
			"b": 208.2,
			"a_div_b": 1.0028818443804035
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Simplex",
	"results": {
		"time": {
			"a": 249.1,
			"b": 248.3,
			"a_div_b": 1.0032219089810712
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Simplex Smooth",
	"results": {
		"time": {
			"a": 309.6,
			"b": 306.9,
			"a_div_b": 1.0087976539589445
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Value",
	"results": {
		"time": {
			"a": 193.9,
			"b": 193.2,
			"a_div_b": 1.0036231884057971
		}
	}
}
{
	"category": "Math > Noise",
	"name": "Value Cubic",
	"results": {
		"time": {
			"a": 461.5,
			"b": 461.5,
			"a_div_b": 1
		}
	}
}
{
	"category": "Math > Triangulate",
	"name": "Triangulate",
	"results": {
		"time": {
			"a": 44.26,
			"b": 44.36,
			"a_div_b": 0.9977457168620378
		}
	}
}
{
	"category": "Navigation > Astar 2d",
	"name": "Astar 5000 Times 5000 Points",
	"results": {
		"time": {
			"a": 357.0,
			"b": 353.0,
			"a_div_b": 1.0113314447592068
		}
	}
}
{
	"category": "Navigation > Astar 3d",
	"name": "Astar 1000 Times 1000 Points",
	"results": {
		"time": {
			"a": 330.3,
			"b": 165.4,
			"a_div_b": 1.9969770253929866
		}
	}
}
{
	"category": "Navigation > Moving Agents 2d",
	"name": "1000 Moving Agents",
	"results": {
		"render_cpu": {
			"a": 0.02517,
			"b": 0.02661,
			"a_div_b": 0.9458850056369785
		},
		"time": {
			"a": 0.015,
			"b": 0.01,
			"a_div_b": 1.5
		}
	}
}
{
	"category": "Navigation > Moving Agents 3d",
	"name": "1000 Moving Agents",
	"results": {
		"render_cpu": {
			"a": 0.005546,
			"b": 0.005244,
			"a_div_b": 1.0575896262395117
		},
		"time": {
			"a": 0.14,
			"b": 0.007,
			"a_div_b": 20
		}
	}
}
{
	"category": "Navigation > Navigation 2d",
	"name": "Navigation 10 000 Random Paths",
	"results": {
		"time": {
			"a": 58.77,
			"b": 60.54,
			"a_div_b": 0.970763131813677
		}
	}
}
{
	"category": "Navigation > Navigation 3d",
	"name": "Navigation 10 000 Random Paths",
	"results": {
		"time": {
			"a": 39.45,
			"b": 38.24,
			"a_div_b": 1.031642259414226
		}
	}
}
{
	"category": "Physics > Area 2d",
	"name": "1000 Area 2d",
	"results": {
		"idle": {
			"a": 59.3,
			"b": 61.15,
			"a_div_b": 0.9697465249386754
		},
		"physics": {
			"a": 17.69,
			"b": 25.7,
			"a_div_b": 0.6883268482490273
		},
		"time": {
			"a": 0.05,
			"b": 0.039,
			"a_div_b": 1.2820512820512822
		}
	}
}
{
	"category": "Physics > Area 3d",
	"name": "1000 Area 3d",
	"results": {
		"idle": {
			"a": 17.96,
			"b": 183.6,
			"a_div_b": 0.09782135076252724
		},
		"physics": {
			"a": 32.42,
			"b": 22.84,
			"a_div_b": 1.4194395796847636
		},
		"time": {
			"a": 0.043,
			"b": 0.046,
			"a_div_b": 0.9347826086956521
		}
	}
}
{
	"category": "Physics > Character Body 2d",
	"name": "1000 Character Bodies 2d",
	"results": {
		"idle": {
			"a": 15.06,
			"b": 143.8,
			"a_div_b": 0.1047287899860918
		},
		"physics": {
			"a": 25.61,
			"b": 25.94,
			"a_div_b": 0.98727833461835
		},
		"time": {
			"a": 0.064,
			"b": 0.037,
			"a_div_b": 1.7297297297297298
		}
	}
}
{
	"category": "Physics > Character Body 3d",
	"name": "1000 Character Bodies 3d",
	"results": {
		"idle": {
			"a": 348.6,
			"b": 37.29,
			"a_div_b": 9.348350764279969
		},
		"physics": {
			"a": 43.09,
			"b": 50.06,
			"a_div_b": 0.8607670795045945
		},
		"time": {
			"a": 0.027,
			"b": 0.021,
			"a_div_b": 1.2857142857142856
		}
	}
}
{
	"category": "Physics > Raycast 2d",
	"name": "10 000 Raycast 2d",
	"results": {
		"time": {
			"a": 27.76,
			"b": 27.76,
			"a_div_b": 1
		}
	}
}
{
	"category": "Physics > Raycast 3d",
	"name": "10 000 Raycast 3d",
	"results": {
		"time": {
			"a": 308.9,
			"b": 299.3,
			"a_div_b": 1.032074841296358
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Circles",
	"results": {
		"idle": {
			"a": 309.7,
			"b": 299.8,
			"a_div_b": 1.0330220146764508
		},
		"physics": {
			"a": 37.22,
			"b": 36.35,
			"a_div_b": 1.0239339752407153
		},
		"time": {
			"a": 6.96,
			"b": 5.501,
			"a_div_b": 1.2652245046355208
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Continuous",
	"results": {
		"idle": {
			"a": 50.65,
			"b": 61.96,
			"a_div_b": 0.8174628792769528
		},
		"physics": {
			"a": 34.3,
			"b": 33.2,
			"a_div_b": 1.0331325301204817
		},
		"time": {
			"a": 7.077,
			"b": 5.55,
			"a_div_b": 1.2751351351351352
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Mixed",
	"results": {
		"idle": {
			"a": 60.24,
			"b": 56.6,
			"a_div_b": 1.0643109540636042
		},
		"physics": {
			"a": 38.51,
			"b": 33.73,
			"a_div_b": 1.141713608064038
		},
		"time": {
			"a": 7.344,
			"b": 5.686,
			"a_div_b": 1.2915933872669716
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Squares",
	"results": {
		"idle": {
			"a": 77.21,
			"b": 48.32,
			"a_div_b": 1.597889072847682
		},
		"physics": {
			"a": 42.93,
			"b": 39.85,
			"a_div_b": 1.0772898368883312
		},
		"time": {
			"a": 6.677,
			"b": 5.188,
			"a_div_b": 1.2870084811102545
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Unbound",
	"results": {
		"idle": {
			"a": 77.46,
			"b": 47.56,
			"a_div_b": 1.6286795626576953
		},
		"physics": {
			"a": 43.08,
			"b": 37.76,
			"a_div_b": 1.1408898305084747
		},
		"time": {
			"a": 7.122,
			"b": 5.719,
			"a_div_b": 1.2453226088477005
		}
	}
}
{
	"category": "Physics > Rigid Body 2d",
	"name": "2000 Rigid Body 2d Unique",
	"results": {
		"idle": {
			"a": 14.71,
			"b": 15.0,
			"a_div_b": 0.9806666666666667
		},
		"physics": {
			"a": 39.38,
			"b": 32.35,
			"a_div_b": 1.2173106646058733
		},
		"time": {
			"a": 7.896,
			"b": 8.633,
			"a_div_b": 0.9146299084906754
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Boxes",
	"results": {
		"idle": {
			"a": 58.73,
			"b": 37.35,
			"a_div_b": 1.5724230254350735
		},
		"physics": {
			"a": 45.41,
			"b": 47.42,
			"a_div_b": 0.9576128215942639
		},
		"time": {
			"a": 6.176,
			"b": 4.846,
			"a_div_b": 1.274453157243087
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Continuous",
	"results": {
		"idle": {
			"a": 27.28,
			"b": 10.26,
			"a_div_b": 2.658869395711501
		},
		"physics": {
			"a": 51.34,
			"b": 50.13,
			"a_div_b": 1.0241372431677638
		},
		"time": {
			"a": 6.423,
			"b": 5.28,
			"a_div_b": 1.2164772727272726
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Mixed",
	"results": {
		"idle": {
			"a": 19.38,
			"b": 26.09,
			"a_div_b": 0.7428133384438482
		},
		"physics": {
			"a": 53.0,
			"b": 48.73,
			"a_div_b": 1.0876256925918326
		},
		"time": {
			"a": 6.43,
			"b": 5.125,
			"a_div_b": 1.2546341463414634
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Spheres",
	"results": {
		"idle": {
			"a": 28.33,
			"b": 23.39,
			"a_div_b": 1.211201368106028
		},
		"physics": {
			"a": 50.04,
			"b": 45.42,
			"a_div_b": 1.1017173051519153
		},
		"time": {
			"a": 6.168,
			"b": 4.921,
			"a_div_b": 1.2534037797195692
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Unbound",
	"results": {
		"idle": {
			"a": 28.02,
			"b": 15.99,
			"a_div_b": 1.7523452157598498
		},
		"physics": {
			"a": 40.52,
			"b": 38.31,
			"a_div_b": 1.0576872879143826
		},
		"time": {
			"a": 6.441,
			"b": 5.36,
			"a_div_b": 1.2016791044776118
		}
	}
}
{
	"category": "Physics > Rigid Body 3d",
	"name": "2000 Rigid Body 3d Unique",
	"results": {
		"idle": {
			"a": 16.34,
			"b": 12.27,
			"a_div_b": 1.3317033414832926
		},
		"physics": {
			"a": 52.24,
			"b": 48.17,
			"a_div_b": 1.0844924226697115
		},
		"time": {
			"a": 7.927,
			"b": 6.382,
			"a_div_b": 1.2420871200250705
		}
	}
}
{
	"category": "Physics > Softbody 3d",
	"name": "Softbody 3d 500 Rigidbodies",
	"results": {
		"idle": {
			"a": 20.76,
			"b": 19.59,
			"a_div_b": 1.0597243491577337
		},
		"physics": {
			"a": 37.39,
			"b": 39.68,
			"a_div_b": 0.9422883064516129
		},
		"time": {
			"a": 0.052,
			"b": 0.037,
			"a_div_b": 1.4054054054054055
		}
	}
}
{
	"category": "Physics > Triangle Mesh",
	"name": "Triangle Mesh 3d 1000 Rigidbodies",
	"results": {
		"idle": {
			"a": 5.032,
			"b": 13.21,
			"a_div_b": 0.3809235427706283
		},
		"physics": {
			"a": 6.833,
			"b": 6.029,
			"a_div_b": 1.133355448664787
		},
		"time": {
			"a": 0.045,
			"b": 0.031,
			"a_div_b": 1.4516129032258065
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Canvasitem Draw Api 10000",
	"results": {
		"render_cpu": {
			"a": 0.16,
			"b": 0.1649,
			"a_div_b": 0.970285021224985
		},
		"render_gpu": {
			"a": 0.1709,
			"b": 0.1796,
			"a_div_b": 0.9515590200445434
		},
		"time": {
			"a": 0.146,
			"b": 0.017,
			"a_div_b": 8.588235294117647
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Canvasitem Draw Api 20000",
	"results": {
		"render_cpu": {
			"a": 0.33,
			"b": 0.3151,
			"a_div_b": 1.0472865756902572
		},
		"render_gpu": {
			"a": 0.9122,
			"b": 0.8968,
			"a_div_b": 1.0171721677074042
		},
		"time": {
			"a": 0.016,
			"b": 0.016,
			"a_div_b": 1
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Canvasitem Draw Api 5000",
	"results": {
		"render_cpu": {
			"a": 0.08162,
			"b": 0.08781,
			"a_div_b": 0.9295068898758684
		},
		"render_gpu": {
			"a": 0.08989,
			"b": 0.1047,
			"a_div_b": 0.8585482330468004
		},
		"time": {
			"a": 0.014,
			"b": 0.013,
			"a_div_b": 1.076923076923077
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Meshinstance 2d 10000",
	"results": {
		"render_cpu": {
			"a": 1.018,
			"b": 0.9484,
			"a_div_b": 1.0733867566427668
		},
		"render_gpu": {
			"a": 0.5859,
			"b": 0.5893,
			"a_div_b": 0.9942304428983538
		},
		"time": {
			"a": 0.016,
			"b": 0.015,
			"a_div_b": 1.0666666666666667
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Meshinstance 2d 20000",
	"results": {
		"render_cpu": {
			"a": 2.163,
			"b": 2.141,
			"a_div_b": 1.0102755721625407
		},
		"render_gpu": {
			"a": 1.457,
			"b": 1.308,
			"a_div_b": 1.1139143730886851
		},
		"time": {
			"a": 0.018,
			"b": 0.017,
			"a_div_b": 1.0588235294117645
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Meshinstance 2d 5000",
	"results": {
		"render_cpu": {
			"a": 0.5045,
			"b": 0.4862,
			"a_div_b": 1.0376388317564786
		},
		"render_gpu": {
			"a": 0.307,
			"b": 0.2723,
			"a_div_b": 1.1274329783327213
		},
		"time": {
			"a": 0.019,
			"b": 0.016,
			"a_div_b": 1.1875
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Sprite 2d 10000",
	"results": {
		"render_cpu": {
			"a": 0.4989,
			"b": 0.5176,
			"a_div_b": 0.9638717156105102
		},
		"render_gpu": {
			"a": 0.4233,
			"b": 0.4281,
			"a_div_b": 0.9887876664330765
		},
		"time": {
			"a": 0.018,
			"b": 0.018,
			"a_div_b": 1
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Sprite 2d 20000",
	"results": {
		"render_cpu": {
			"a": 0.9657,
			"b": 1.039,
			"a_div_b": 0.9294513955726661
		},
		"render_gpu": {
			"a": 0.8825,
			"b": 0.8916,
			"a_div_b": 0.9897936294302377
		},
		"time": {
			"a": 0.017,
			"b": 0.017,
			"a_div_b": 1
		}
	}
}
{
	"category": "Rendering > Bunnymark",
	"name": "Bunnymark Sprite 2d 5000",
	"results": {
		"render_cpu": {
			"a": 0.2398,
			"b": 0.2382,
			"a_div_b": 1.0067170445004199
		},
		"render_gpu": {
			"a": 0.1939,
			"b": 0.1884,
			"a_div_b": 1.0291932059447981
		},
		"time": {
			"a": 0.018,
			"b": 0.017,
			"a_div_b": 1.0588235294117645
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 10 000 Shapes Every Frame",
	"results": {
		"render_cpu": {
			"a": 1.386,
			"b": 1.109,
			"a_div_b": 1.2497745716862037
		},
		"render_gpu": {
			"a": 2.579,
			"b": 2.438,
			"a_div_b": 1.0578342904019689
		},
		"time": {
			"a": 0.01,
			"b": 0.008,
			"a_div_b": 1.25
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 10 000 Shapes Once",
	"results": {
		"render_cpu": {
			"a": 0.8642,
			"b": 0.7106,
			"a_div_b": 1.2161553616661975
		},
		"render_gpu": {
			"a": 1.367,
			"b": 1.366,
			"a_div_b": 1.000732064421669
		},
		"time": {
			"a": 0.015,
			"b": 0.008,
			"a_div_b": 1.875
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 20 000 Shapes Every Frame",
	"results": {
		"render_cpu": {
			"a": 3.683,
			"b": 2.295,
			"a_div_b": 1.60479302832244
		},
		"render_gpu": {
			"a": 3.879,
			"b": 3.743,
			"a_div_b": 1.03633449104996
		},
		"time": {
			"a": 0.021,
			"b": 0.009,
			"a_div_b": 2.3333333333333335
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 20 000 Shapes Once",
	"results": {
		"render_cpu": {
			"a": 2.326,
			"b": 1.543,
			"a_div_b": 1.507453013609851
		},
		"render_gpu": {
			"a": 2.913,
			"b": 2.822,
			"a_div_b": 1.0322466335931961
		},
		"time": {
			"a": 0.015,
			"b": 0.01,
			"a_div_b": 1.5
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 5000 Shapes Every Frame",
	"results": {
		"render_cpu": {
			"a": 0.5901,
			"b": 0.5136,
			"a_div_b": 1.1489485981308412
		},
		"render_gpu": {
			"a": 0.9882,
			"b": 0.9053,
			"a_div_b": 1.0915718546338231
		},
		"time": {
			"a": 0.027,
			"b": 0.009,
			"a_div_b": 3
		}
	}
}
{
	"category": "Rendering > Canvas Item",
	"name": "Draw 5000 Shapes Once",
	"results": {
		"render_cpu": {
			"a": 0.3854,
			"b": 0.3563,
			"a_div_b": 1.0816727476845356
		},
		"render_gpu": {
			"a": 0.687,
			"b": 0.6736,
			"a_div_b": 1.019893111638955
		},
		"time": {
			"a": 0.02,
			"b": 0.007,
			"a_div_b": 2.857142857142857
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Basic Cull",
	"results": {
		"render_cpu": {
			"a": 1.82,
			"b": 1.902,
			"a_div_b": 0.9568874868559412
		},
		"render_gpu": {
			"a": 0.4234,
			"b": 0.4352,
			"a_div_b": 0.9728860294117647
		},
		"time": {
			"a": 0.026,
			"b": 0.019,
			"a_div_b": 1.368421052631579
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Directional Light Cull",
	"results": {
		"render_cpu": {
			"a": 2.958,
			"b": 3.083,
			"a_div_b": 0.9594550762244567
		},
		"render_gpu": {
			"a": 0.9508,
			"b": 0.9284,
			"a_div_b": 1.0241275312365359
		},
		"time": {
			"a": 0.039,
			"b": 0.038,
			"a_div_b": 1.0263157894736843
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Dynamic Cull",
	"results": {
		"render_cpu": {
			"a": 2.989,
			"b": 2.861,
			"a_div_b": 1.0447396015379238
		},
		"render_gpu": {
			"a": 0.8656,
			"b": 0.8112,
			"a_div_b": 1.0670611439842208
		},
		"time": {
			"a": 0.045,
			"b": 0.022,
			"a_div_b": 2.0454545454545454
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Dynamic Omni Light Cull",
	"results": {
		"render_cpu": {
			"a": 2.451,
			"b": 2.362,
			"a_div_b": 1.037679932260796
		},
		"render_gpu": {
			"a": 0.7074,
			"b": 0.6557,
			"a_div_b": 1.0788470337044382
		},
		"time": {
			"a": 0.024,
			"b": 0.024,
			"a_div_b": 1
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Dynamic Omni Light Cull With Shadows",
	"results": {
		"render_cpu": {
			"a": 3.606,
			"b": 3.493,
			"a_div_b": 1.0323504151159462
		},
		"render_gpu": {
			"a": 1.017,
			"b": 0.9365,
			"a_div_b": 1.0859583555792844
		},
		"time": {
			"a": 0.025,
			"b": 0.023,
			"a_div_b": 1.0869565217391306
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Dynamic Rotate Cull",
	"results": {
		"render_cpu": {
			"a": 3.182,
			"b": 3.468,
			"a_div_b": 0.9175317185697809
		},
		"render_gpu": {
			"a": 0.878,
			"b": 0.9272,
			"a_div_b": 0.9469370146678171
		},
		"time": {
			"a": 0.025,
			"b": 0.029,
			"a_div_b": 0.8620689655172414
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Dynamic Spot Light Cull With Shadows",
	"results": {
		"render_cpu": {
			"a": 2.889,
			"b": 3.092,
			"a_div_b": 0.9343467011642949
		},
		"render_gpu": {
			"a": 0.83,
			"b": 0.9081,
			"a_div_b": 0.9139962559189516
		},
		"time": {
			"a": 0.025,
			"b": 0.024,
			"a_div_b": 1.0416666666666667
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Static Omni Light Cull",
	"results": {
		"render_cpu": {
			"a": 1.914,
			"b": 1.862,
			"a_div_b": 1.0279269602577872
		},
		"render_gpu": {
			"a": 0.5598,
			"b": 0.5685,
			"a_div_b": 0.9846965699208442
		},
		"time": {
			"a": 0.031,
			"b": 0.02,
			"a_div_b": 1.55
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Static Omni Light Cull With Shadows",
	"results": {
		"render_cpu": {
			"a": 1.942,
			"b": 2.007,
			"a_div_b": 0.9676133532635774
		},
		"render_gpu": {
			"a": 0.5415,
			"b": 0.5293,
			"a_div_b": 1.0230493104099754
		},
		"time": {
			"a": 0.03,
			"b": 0.018,
			"a_div_b": 1.6666666666666667
		}
	}
}
{
	"category": "Rendering > Culling",
	"name": "Static Spot Light Cull With Shadows",
	"results": {
		"render_cpu": {
			"a": 2.01,
			"b": 1.762,
			"a_div_b": 1.140749148694665
		},
		"render_gpu": {
			"a": 0.5603,
			"b": 0.4874,
			"a_div_b": 1.1495691423881822
		},
		"time": {
			"a": 0.022,
			"b": 0.029,
			"a_div_b": 0.7586206896551724
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Aaa Setup",
	"results": {
		"time": {
			"a": 1997.0,
			"b": 1393.0,
			"a_div_b": 1.4335965541995692
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Cull Deep",
	"results": {
		"render_cpu": {
			"a": 2.18,
			"b": 2.149,
			"a_div_b": 1.0144253140995814
		},
		"render_gpu": {
			"a": 0.148,
			"b": 0.1502,
			"a_div_b": 0.9853528628495339
		},
		"time": {
			"a": 238.3,
			"b": 237.1,
			"a_div_b": 1.0050611556305358
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Cull Fast",
	"results": {
		"render_cpu": {
			"a": 1.774,
			"b": 1.732,
			"a_div_b": 1.0242494226327945
		},
		"render_gpu": {
			"a": 0.1508,
			"b": 0.1511,
			"a_div_b": 0.9980145598941097
		},
		"time": {
			"a": 48.7,
			"b": 50.88,
			"a_div_b": 0.9571540880503144
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Cull Slow",
	"results": {
		"render_cpu": {
			"a": 1.546,
			"b": 1.706,
			"a_div_b": 0.9062133645955451
		},
		"render_gpu": {
			"a": 0.144,
			"b": 0.1444,
			"a_div_b": 0.9972299168975068
		},
		"time": {
			"a": 48.22,
			"b": 42.02,
			"a_div_b": 1.1475487862922418
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Flat Deep",
	"results": {
		"render_cpu": {
			"a": 2.701,
			"b": 2.481,
			"a_div_b": 1.0886739218057235
		},
		"render_gpu": {
			"a": 0.2675,
			"b": 0.2264,
			"a_div_b": 1.1815371024734984
		},
		"time": {
			"a": 197.8,
			"b": 221.1,
			"a_div_b": 0.8946178199909544
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Flat Fast",
	"results": {
		"render_cpu": {
			"a": 2.185,
			"b": 1.955,
			"a_div_b": 1.1176470588235294
		},
		"render_gpu": {
			"a": 0.1609,
			"b": 0.2108,
			"a_div_b": 0.7632827324478179
		},
		"time": {
			"a": 48.96,
			"b": 41.46,
			"a_div_b": 1.1808972503617945
		}
	}
}
{
	"category": "Rendering > Hlod",
	"name": "Flat Slow",
	"results": {
		"render_cpu": {
			"a": 2.115,
			"b": 1.745,
			"a_div_b": 1.2120343839541547
		},
		"render_gpu": {
			"a": 0.2486,
			"b": 0.1267,
			"a_div_b": 1.9621152328334646
		},
		"time": {
			"a": 48.37,
			"b": 42.01,
			"a_div_b": 1.1513925255891455
		}
	}
}
{
	"category": "Rendering > Lightmap Probe Influence",
	"name": "Lightmap Probe Influence",
	"results": {
		"render_cpu": {
			"a": 1.853,
			"b": 2.255,
			"a_div_b": 0.821729490022173
		},
		"render_gpu": {
			"a": 0.4832,
			"b": 0.7004,
			"a_div_b": 0.6898914905768132
		},
		"time": {
			"a": 0.069,
			"b": 0.086,
			"a_div_b": 0.8023255813953489
		}
	}
}
{
	"category": "Rendering > Lights 2d",
	"name": "50 Point Light 2d With Shadows",
	"results": {
		"render_cpu": {
			"a": 0.2689,
			"b": 0.2395,
			"a_div_b": 1.1227557411273485
		},
		"render_gpu": {
			"a": 0.1337,
			"b": 0.1337,
			"a_div_b": 1
		},
		"time": {
			"a": 0.053,
			"b": 0.027,
			"a_div_b": 1.962962962962963
		}
	}
}
{
	"category": "Rendering > Lights 2d",
	"name": "50 Point Light 2d Without Shadows",
	"results": {
		"render_cpu": {
			"a": 0.01598,
			"b": 0.0157,
			"a_div_b": 1.0178343949044588
		},
		"render_gpu": {
			"a": 0.05446,
			"b": 0.05444,
			"a_div_b": 1.000367376928729
		},
		"time": {
			"a": 0.014,
			"b": 0.012,
			"a_div_b": 1.1666666666666667
		}
	}
}
{
	"category": "Rendering > Lights 2d",
	"name": "Directional Light 2d With Shadows",
	"results": {
		"render_cpu": {
			"a": 0.008924,
			"b": 0.008963,
			"a_div_b": 0.9956487783108333
		},
		"render_gpu": {
			"a": 0.02247,
			"b": 0.02194,
			"a_div_b": 1.0241567912488605
		},
		"time": {
			"a": 0.012,
			"b": 0.009,
			"a_div_b": 1.3333333333333335
		}
	}
}
{
	"category": "Rendering > Lights 2d",
	"name": "Directional Light 2d Without Shadows",
	"results": {
		"render_cpu": {
			"a": 0.006759,
			"b": 0.006773,
			"a_div_b": 0.9979329691421822
		},
		"render_gpu": {
			"a": 0.01743,
			"b": 0.01751,
			"a_div_b": 0.9954311821816105
		},
		"time": {
			"a": 0.013,
			"b": 0.011,
			"a_div_b": 1.1818181818181819
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Box 100",
	"results": {
		"render_cpu": {
			"a": 0.92,
			"b": 1.035,
			"a_div_b": 0.888888888888889
		},
		"render_gpu": {
			"a": 0.1267,
			"b": 0.13,
			"a_div_b": 0.9746153846153847
		},
		"time": {
			"a": 0.62,
			"b": 0.419,
			"a_div_b": 1.4797136038186158
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Box 1000",
	"results": {
		"render_cpu": {
			"a": 2.318,
			"b": 2.161,
			"a_div_b": 1.072651550208237
		},
		"render_gpu": {
			"a": 0.3555,
			"b": 0.354,
			"a_div_b": 1.0042372881355932
		},
		"time": {
			"a": 8.518,
			"b": 9.26,
			"a_div_b": 0.9198704103671708
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Box 10000",
	"results": {
		"render_cpu": {
			"a": 5.37,
			"b": 5.762,
			"a_div_b": 0.9319680666435266
		},
		"render_gpu": {
			"a": 1.131,
			"b": 1.035,
			"a_div_b": 1.0927536231884059
		},
		"time": {
			"a": 40.21,
			"b": 34.44,
			"a_div_b": 1.1675377468060395
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Omni 10",
	"results": {
		"render_cpu": {
			"a": 2.253,
			"b": 2.112,
			"a_div_b": 1.0667613636363635
		},
		"render_gpu": {
			"a": 0.2855,
			"b": 0.26,
			"a_div_b": 1.098076923076923
		},
		"time": {
			"a": 3.494,
			"b": 2.747,
			"a_div_b": 1.2719330178376411
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Omni 100",
	"results": {
		"render_cpu": {
			"a": 2.82,
			"b": 2.849,
			"a_div_b": 0.9898209898209896
		},
		"render_gpu": {
			"a": 0.4316,
			"b": 0.4635,
			"a_div_b": 0.9311758360302049
		},
		"time": {
			"a": 11.14,
			"b": 8.994,
			"a_div_b": 1.2386035134534135
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Speed Fast",
	"results": {
		"render_cpu": {
			"a": 2.482,
			"b": 2.354,
			"a_div_b": 1.054375531011045
		},
		"render_gpu": {
			"a": 0.4024,
			"b": 0.375,
			"a_div_b": 1.0730666666666666
		},
		"time": {
			"a": 6.202,
			"b": 5.734,
			"a_div_b": 1.081618416463202
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Speed Slow",
	"results": {
		"render_cpu": {
			"a": 2.356,
			"b": 1.984,
			"a_div_b": 1.1875
		},
		"render_gpu": {
			"a": 0.3799,
			"b": 0.3306,
			"a_div_b": 1.1491228070175439
		},
		"time": {
			"a": 10.3,
			"b": 11.36,
			"a_div_b": 0.9066901408450705
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Sphere 100",
	"results": {
		"render_cpu": {
			"a": 1.029,
			"b": 1.14,
			"a_div_b": 0.9026315789473685
		},
		"render_gpu": {
			"a": 0.2362,
			"b": 0.263,
			"a_div_b": 0.8980988593155893
		},
		"time": {
			"a": 1.489,
			"b": 1.266,
			"a_div_b": 1.1761453396524488
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Sphere 1000",
	"results": {
		"render_cpu": {
			"a": 2.201,
			"b": 2.364,
			"a_div_b": 0.9310490693739425
		},
		"render_gpu": {
			"a": 0.6381,
			"b": 0.7404,
			"a_div_b": 0.8618314424635333
		},
		"time": {
			"a": 13.2,
			"b": 11.74,
			"a_div_b": 1.1243611584327087
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Sphere 10000",
	"results": {
		"render_cpu": {
			"a": 5.443,
			"b": 6.093,
			"a_div_b": 0.8933202035122271
		},
		"render_gpu": {
			"a": 2.671,
			"b": 2.854,
			"a_div_b": 0.9358794674141555
		},
		"time": {
			"a": 33.57,
			"b": 39.1,
			"a_div_b": 0.8585677749360614
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Spot 10",
	"results": {
		"render_cpu": {
			"a": 2.2,
			"b": 2.048,
			"a_div_b": 1.07421875
		},
		"render_gpu": {
			"a": 0.2074,
			"b": 0.2287,
			"a_div_b": 0.9068648885002187
		},
		"time": {
			"a": 3.526,
			"b": 3.398,
			"a_div_b": 1.0376692171865802
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Spot 100",
	"results": {
		"render_cpu": {
			"a": 3.814,
			"b": 3.108,
			"a_div_b": 1.2271557271557272
		},
		"render_gpu": {
			"a": 0.5904,
			"b": 0.5121,
			"a_div_b": 1.1528998242530757
		},
		"time": {
			"a": 7.415,
			"b": 5.826,
			"a_div_b": 1.2727428767593547
		}
	}
}
{
	"category": "Rendering > Lights And Meshes",
	"name": "Stress",
	"results": {
		"render_cpu": {
			"a": 8.902,
			"b": 9.225,
			"a_div_b": 0.9649864498644986
		},
		"render_gpu": {
			"a": 3.442,
			"b": 3.301,
			"a_div_b": 1.0427143289912149
		},
		"time": {
			"a": 32.78,
			"b": 46.98,
			"a_div_b": 0.6977437207322266
		}
	}
}
{
	"category": "Rendering > Particles 2d",
	"name": "Few Cpuparticles 2d Nodes With Many Particles",
	"results": {
		"render_cpu": {
			"a": 0.04044,
			"b": 0.03295,
			"a_div_b": 1.2273141122913505
		},
		"render_gpu": {
			"a": 0.1001,
			"b": 0.09271,
			"a_div_b": 1.0797109265451408
		},
		"time": {
			"a": 0.021,
			"b": 0.024,
			"a_div_b": 0.875
		}
	}
}
{
	"category": "Rendering > Particles 2d",
	"name": "Few Gpuparticles 2d Nodes With Many Particles",
	"results": {
		"render_cpu": {
			"a": 0.03104,
			"b": 0.02567,
			"a_div_b": 1.2091936112193222
		},
		"render_gpu": {
			"a": 0.06933,
			"b": 0.07867,
			"a_div_b": 0.8812762171094445
		},
		"time": {
			"a": 0.016,
			"b": 0.014,
			"a_div_b": 1.1428571428571428
		}
	}
}
{
	"category": "Rendering > Particles 2d",
	"name": "Many Cpuparticles 2d Nodes With Few Particles",
	"results": {
		"render_cpu": {
			"a": 0.3176,
			"b": 0.2368,
			"a_div_b": 1.3412162162162162
		},
		"render_gpu": {
			"a": 0.1086,
			"b": 0.1107,
			"a_div_b": 0.981029810298103
		},
		"time": {
			"a": 0.019,
			"b": 0.013,
			"a_div_b": 1.4615384615384617
		}
	}
}
{
	"category": "Rendering > Particles 2d",
	"name": "Many Gpuparticles 2d Nodes With Few Particles",
	"results": {
		"render_cpu": {
			"a": 0.3481,
			"b": 0.2766,
			"a_div_b": 1.2584960231381055
		},
		"render_gpu": {
			"a": 0.08779,
			"b": 0.08789,
			"a_div_b": 0.9988622141313006
		},
		"time": {
			"a": 0.178,
			"b": 0.02,
			"a_div_b": 8.899999999999999
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "1000 Polygon 2d",
	"results": {
		"render_cpu": {
			"a": 0.1969,
			"b": 0.1334,
			"a_div_b": 1.4760119940029985
		},
		"render_gpu": {
			"a": 0.04909,
			"b": 0.04879,
			"a_div_b": 1.0061488009838082
		},
		"time": {
			"a": 0.262,
			"b": 0.014,
			"a_div_b": 18.714285714285715
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "100 Polygon 2d",
	"results": {
		"render_cpu": {
			"a": 0.02006,
			"b": 0.01751,
			"a_div_b": 1.145631067961165
		},
		"render_gpu": {
			"a": 0.01151,
			"b": 0.01187,
			"a_div_b": 0.9696714406065711
		},
		"time": {
			"a": 0.294,
			"b": 0.012,
			"a_div_b": 24.499999999999996
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "10 Polygon 2d",
	"results": {
		"render_cpu": {
			"a": 0.006363,
			"b": 0.006304,
			"a_div_b": 1.0093591370558375
		},
		"render_gpu": {
			"a": 0.007203,
			"b": 0.007309,
			"a_div_b": 0.9854973320563688
		},
		"time": {
			"a": 0.013,
			"b": 0.011,
			"a_div_b": 1.1818181818181819
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "5000 Sprite 2d",
	"results": {
		"render_cpu": {
			"a": 0.2456,
			"b": 0.2348,
			"a_div_b": 1.0459965928449744
		},
		"render_gpu": {
			"a": 0.7642,
			"b": 0.7638,
			"a_div_b": 1.0005236973029588
		},
		"time": {
			"a": 0.013,
			"b": 0.01,
			"a_div_b": 1.2999999999999998
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "500 Sprite 2d",
	"results": {
		"render_cpu": {
			"a": 0.02889,
			"b": 0.02706,
			"a_div_b": 1.0676274944567627
		},
		"render_gpu": {
			"a": 0.08617,
			"b": 0.08523,
			"a_div_b": 1.0110289804059602
		},
		"time": {
			"a": 0.206,
			"b": 0.013,
			"a_div_b": 15.846153846153847
		}
	}
}
{
	"category": "Rendering > Polygon Sprite 2d",
	"name": "50 Sprite 2d",
	"results": {
		"render_cpu": {
			"a": 0.007532,
			"b": 0.007249,
			"a_div_b": 1.0390398675679404
		},
		"render_gpu": {
			"a": 0.01637,
			"b": 0.01629,
			"a_div_b": 1.0049109883364027
		},
		"time": {
			"a": 0.019,
			"b": 0.013,
			"a_div_b": 1.4615384615384617
		}
	}
}
{
	"category": "Rendering > Sdfgi",
	"name": "Camera Motion With Sdfgi",
	"results": {
		"render_cpu": {
			"a": 1.052,
			"b": 0.9543,
			"a_div_b": 1.1023787069055853
		},
		"render_gpu": {
			"a": 0.5193,
			"b": 0.4996,
			"a_div_b": 1.0394315452361889
		},
		"time": {
			"a": 0.119,
			"b": 0.095,
			"a_div_b": 1.2526315789473683
		}
	}
}
{
	"category": "Rendering > Sdfgi",
	"name": "Camera Motion Without Sdfgi",
	"results": {
		"render_cpu": {
			"a": 0.9685,
			"b": 0.9707,
			"a_div_b": 0.9977335943133822
		},
		"render_gpu": {
			"a": 0.1646,
			"b": 0.1664,
			"a_div_b": 0.9891826923076923
		},
		"time": {
			"a": 0.354,
			"b": 0.253,
			"a_div_b": 1.3992094861660078
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Fsr 2 100",
	"results": {
		"render_cpu": {
			"a": 1.036,
			"b": 1.093,
			"a_div_b": 0.9478499542543459
		},
		"render_gpu": {
			"a": 0.4378,
			"b": 0.5153,
			"a_div_b": 0.8496021734911703
		},
		"time": {
			"a": 0.382,
			"b": 0.189,
			"a_div_b": 2.0211640211640214
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Fsr 2 50",
	"results": {
		"render_cpu": {
			"a": 1.154,
			"b": 1.082,
			"a_div_b": 1.066543438077634
		},
		"render_gpu": {
			"a": 0.3708,
			"b": 0.4131,
			"a_div_b": 0.8976034858387799
		},
		"time": {
			"a": 0.414,
			"b": 0.332,
			"a_div_b": 1.2469879518072289
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Fxaa",
	"results": {
		"render_cpu": {
			"a": 0.9759,
			"b": 0.9021,
			"a_div_b": 1.0818091120718323
		},
		"render_gpu": {
			"a": 0.2508,
			"b": 0.2104,
			"a_div_b": 1.1920152091254754
		},
		"time": {
			"a": 0.274,
			"b": 0.345,
			"a_div_b": 0.7942028985507248
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Msaa 2x",
	"results": {
		"render_cpu": {
			"a": 0.9481,
			"b": 0.8101,
			"a_div_b": 1.1703493395877052
		},
		"render_gpu": {
			"a": 0.2675,
			"b": 0.2247,
			"a_div_b": 1.1904761904761905
		},
		"time": {
			"a": 0.259,
			"b": 0.194,
			"a_div_b": 1.3350515463917525
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Msaa 4x",
	"results": {
		"render_cpu": {
			"a": 0.9824,
			"b": 0.9362,
			"a_div_b": 1.0493484298226874
		},
		"render_gpu": {
			"a": 0.3407,
			"b": 0.2779,
			"a_div_b": 1.2259805685498382
		},
		"time": {
			"a": 0.497,
			"b": 0.331,
			"a_div_b": 1.5015105740181267
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Aa Taa",
	"results": {
		"render_cpu": {
			"a": 0.7101,
			"b": 0.931,
			"a_div_b": 0.7627282491944145
		},
		"render_gpu": {
			"a": 0.2519,
			"b": 0.2933,
			"a_div_b": 0.8588475963177634
		},
		"time": {
			"a": 0.23,
			"b": 0.185,
			"a_div_b": 1.2432432432432432
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Basic Ambient",
	"results": {
		"render_cpu": {
			"a": 0.9041,
			"b": 0.8418,
			"a_div_b": 1.074008077928249
		},
		"render_gpu": {
			"a": 0.1654,
			"b": 0.1986,
			"a_div_b": 0.8328298086606243
		},
		"time": {
			"a": 0.329,
			"b": 0.187,
			"a_div_b": 1.7593582887700536
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Basic Directional",
	"results": {
		"render_cpu": {
			"a": 1.144,
			"b": 1.148,
			"a_div_b": 0.9965156794425087
		},
		"render_gpu": {
			"a": 0.3198,
			"b": 0.2974,
			"a_div_b": 1.0753194351042366
		},
		"time": {
			"a": 0.353,
			"b": 0.194,
			"a_div_b": 1.8195876288659791
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Basic Omni",
	"results": {
		"render_cpu": {
			"a": 1.812,
			"b": 1.733,
			"a_div_b": 1.0455856895556837
		},
		"render_gpu": {
			"a": 0.8754,
			"b": 0.8414,
			"a_div_b": 1.0404088424055145
		},
		"time": {
			"a": 0.371,
			"b": 0.321,
			"a_div_b": 1.1557632398753894
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Dof Box",
	"results": {
		"render_cpu": {
			"a": 0.985,
			"b": 0.9598,
			"a_div_b": 1.0262554698895603
		},
		"render_gpu": {
			"a": 0.2848,
			"b": 0.3205,
			"a_div_b": 0.8886115444617785
		},
		"time": {
			"a": 0.389,
			"b": 0.198,
			"a_div_b": 1.9646464646464645
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Dof Circle",
	"results": {
		"render_cpu": {
			"a": 0.9952,
			"b": 0.7374,
			"a_div_b": 1.3496067263357743
		},
		"render_gpu": {
			"a": 0.2519,
			"b": 0.1942,
			"a_div_b": 1.2971163748712666
		},
		"time": {
			"a": 0.356,
			"b": 0.328,
			"a_div_b": 1.0853658536585364
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Dof Hex",
	"results": {
		"render_cpu": {
			"a": 0.9384,
			"b": 0.9776,
			"a_div_b": 0.9599018003273322
		},
		"render_gpu": {
			"a": 0.2737,
			"b": 0.3369,
			"a_div_b": 0.8124072425051945
		},
		"time": {
			"a": 0.21,
			"b": 0.188,
			"a_div_b": 1.1170212765957446
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Effect Glow",
	"results": {
		"render_cpu": {
			"a": 1.132,
			"b": 1.151,
			"a_div_b": 0.9834926151172892
		},
		"render_gpu": {
			"a": 0.4043,
			"b": 0.4117,
			"a_div_b": 0.9820257469030848
		},
		"time": {
			"a": 0.341,
			"b": 0.351,
			"a_div_b": 0.9715099715099716
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Effect Ssao",
	"results": {
		"render_cpu": {
			"a": 1.25,
			"b": 1.2,
			"a_div_b": 1.0416666666666667
		},
		"render_gpu": {
			"a": 0.4426,
			"b": 0.4882,
			"a_div_b": 0.9065956575174109
		},
		"time": {
			"a": 0.365,
			"b": 0.362,
			"a_div_b": 1.0082872928176796
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Effect Ssr",
	"results": {
		"render_cpu": {
			"a": 1.213,
			"b": 1.234,
			"a_div_b": 0.9829821717990276
		},
		"render_gpu": {
			"a": 0.529,
			"b": 0.5614,
			"a_div_b": 0.9422871392946206
		},
		"time": {
			"a": 0.208,
			"b": 0.165,
			"a_div_b": 1.2606060606060605
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Effect Volumetric Fog",
	"results": {
		"render_cpu": {
			"a": 1.21,
			"b": 1.128,
			"a_div_b": 1.072695035460993
		},
		"render_gpu": {
			"a": 0.4569,
			"b": 0.3919,
			"a_div_b": 1.1658586374075017
		},
		"time": {
			"a": 0.376,
			"b": 0.184,
			"a_div_b": 2.0434782608695654
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Gi Lightmap",
	"results": {
		"render_cpu": {
			"a": 0.7434,
			"b": 1.044,
			"a_div_b": 0.7120689655172413
		},
		"render_gpu": {
			"a": 0.2597,
			"b": 0.3148,
			"a_div_b": 0.8249682337992374
		},
		"time": {
			"a": 0.208,
			"b": 0.185,
			"a_div_b": 1.1243243243243244
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Gi Refprobe",
	"results": {
		"render_cpu": {
			"a": 1.02,
			"b": 1.089,
			"a_div_b": 0.9366391184573003
		},
		"render_gpu": {
			"a": 0.3143,
			"b": 0.3748,
			"a_div_b": 0.8385805763073639
		},
		"time": {
			"a": 0.299,
			"b": 0.327,
			"a_div_b": 0.9143730886850152
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Gi Sdfgi",
	"results": {
		"render_cpu": {
			"a": 1.013,
			"b": 1.211,
			"a_div_b": 0.8364987613542525
		},
		"render_gpu": {
			"a": 0.5852,
			"b": 0.6515,
			"a_div_b": 0.8982348426707599
		},
		"time": {
			"a": 0.364,
			"b": 0.207,
			"a_div_b": 1.7584541062801933
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Gi Ssil",
	"results": {
		"render_cpu": {
			"a": 1.307,
			"b": 1.259,
			"a_div_b": 1.0381254964257347
		},
		"render_gpu": {
			"a": 0.5268,
			"b": 0.5371,
			"a_div_b": 0.9808229380003725
		},
		"time": {
			"a": 0.099,
			"b": 0.204,
			"a_div_b": 0.4852941176470589
		}
	}
}
{
	"category": "Rendering > Sponza",
	"name": "Gi Voxelgi",
	"results": {
		"render_cpu": {
			"a": 1.185,
			"b": 1.142,
			"a_div_b": 1.0376532399299476
		},
		"render_gpu": {
			"a": 0.5814,
			"b": 0.5674,
			"a_div_b": 1.0246739513570673
		},
		"time": {
			"a": 0.23,
			"b": 0.365,
			"a_div_b": 0.6301369863013699
		}
	}
}
{
	"category": "Scene Nodes > Add Children",
	"name": "Add Children With Same Name",
	"results": {
		"time": {
			"a": 53.35,
			"b": 62.56,
			"a_div_b": 0.8527813299232736
		}
	}
}
{
	"category": "Scene Nodes > Add Children",
	"name": "Add Children Without Name",
	"results": {
		"time": {
			"a": 40.13,
			"b": 45.48,
			"a_div_b": 0.8823658751099386
		}
	}
}
{
	"category": "Scene Nodes > Delete Children",
	"name": "Delete Children In Order",
	"results": {
		"time": {
			"a": 2.823,
			"b": 2.607,
			"a_div_b": 1.0828538550057536
		}
	}
}
{
	"category": "Scene Nodes > Delete Children",
	"name": "Delete Children Random Order",
	"results": {
		"time": {
			"a": 11.69,
			"b": 9.118,
			"a_div_b": 1.2820794033779337
		}
	}
}
{
	"category": "Scene Nodes > Delete Children",
	"name": "Delete Children Reverse Order",
	"results": {
		"time": {
			"a": 3.549,
			"b": 2.555,
			"a_div_b": 1.389041095890411
		}
	}
}
{
	"category": "Scene Nodes > Get Node",
	"name": "Get Node",
	"results": {
		"time": {
			"a": 22.63,
			"b": 18.3,
			"a_div_b": 1.2366120218579233
		}
	}
}
{
	"category": "Scene Nodes > Move Children",
	"name": "Move Children",
	"results": {
		"time": {
			"a": 350.7,
			"b": 532.5,
			"a_div_b": 0.6585915492957747
		}
	}
}
{
	"category": "Viewport > Activation",
	"name": "Activate 1024 Viewports",
	"results": {
		"time": {
			"a": 64.66,
			"b": 51.61,
			"a_div_b": 1.252857973260996
		}
	}
}
{
	"category": "Viewport > Activation",
	"name": "Activate 256 Viewports",
	"results": {
		"time": {
			"a": 21.62,
			"b": 16.6,
			"a_div_b": 1.3024096385542168
		}
	}
}
{
	"category": "Viewport > Activation",
	"name": "Activate 64 Viewports",
	"results": {
		"time": {
			"a": 4.158,
			"b": 3.139,
			"a_div_b": 1.3246256769671871
		}
	}
}
{
	"category": "Viewport > Allocation",
	"name": "Create 1024 Viewports",
	"results": {
		"time": {
			"a": 28.58,
			"b": 24.0,
			"a_div_b": 1.1908333333333332
		}
	}
}
{
	"category": "Viewport > Allocation",
	"name": "Create 256 Viewports",
	"results": {
		"time": {
			"a": 10.99,
			"b": 9.561,
			"a_div_b": 1.1494613534149147
		}
	}
}
{
	"category": "Viewport > Allocation",
	"name": "Create 64 Viewports",
	"results": {
		"time": {
			"a": 1.886,
			"b": 1.342,
			"a_div_b": 1.4053651266766019
		}
	}
}

@YYF233333
Copy link
Contributor Author

YYF233333 commented Nov 19, 2024

Cleanup unused files.
Some test failed, no idea what's going wrong.

Edit: Test master and these failure still exists so unrelated to this PR.

@YYF233333
Copy link
Contributor Author

Also @Calinou I want to point out that godot-benchmark's results are quite unstable. Easily detect 10%-20% diff between identical runs, and barely converge even running multiple times. That's why I take these MRPs.

@YYF233333 YYF233333 marked this pull request as ready for review November 20, 2024 11:36
@YYF233333 YYF233333 requested review from a team as code owners November 20, 2024 11:36
core/os/memory.cpp Outdated Show resolved Hide resolved
core/SCsub Outdated Show resolved Hide resolved
core/os/memory.cpp Outdated Show resolved Hide resolved
@Mickeon
Copy link
Contributor

Mickeon commented Nov 20, 2024

I took the liberty to edit @Calinou 's review because I almost had a panic attack from having to scroll down

@adamscott
Copy link
Member

I'm wondering if MIMALLOC_ENABLED is the right term for this. How about ALLOC_MIMALLOC? Because maybe there will be other allocators in the future following your PR?

@YYF233333
Copy link
Contributor Author

Changed.

By the way anybody knows why the CI fail? I really have no idea what it's complaining about.

@AThousandShips
Copy link
Member

Something thread safety related, can't quite tell, but I suspect something with this library isn't thread safe in some way

@YYF233333
Copy link
Contributor Author

I tried mimalloc v1, v2, dev branch, enable secure mode, build with/without optimizations and manually add a lock around malloc. None of them eliminate the warning. I suspect it is either a false positive or some godot code relying on undocumented ptmalloc features to work. It is quite weird for malloc to involved in deadlock, because neither it expose lock nor accept lock from user.

Give up for now, waiting for somebody familiar with multi-threading.

@YYF233333
Copy link
Contributor Author

Close this as #99686 is a better alternative.

@YYF233333 YYF233333 closed this Nov 27, 2024
@AThousandShips AThousandShips removed this from the 4.x milestone Nov 27, 2024
@adamscott
Copy link
Member

Thanks for your hard work, @YYF233333 ! Really, your proposal and subsequent PR (even closed) seems to lead to a Godot upgrade!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants