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

Port GDScript benchmarks to C# #84

Merged
merged 13 commits into from
Aug 4, 2024

Conversation

OverloadedOrama
Copy link
Contributor

@OverloadedOrama OverloadedOrama commented Jun 28, 2024

Ports the following GDScript benchmark suites to C#:

  • Alloc
  • Binary Trees
  • Hello world
  • Lambda performance
  • Mandelbrot Set
  • Merkle trees
  • Nbody
  • Spectral norm
  • String Checksum
  • String Format
  • String Manipulation

Note that in order for you to run C# benchmarks in Godot 4.3, #82 needs to be merged first.

Results on my PC

{
"benchmarks": [
{
"category": "Csharp > Alloc",
"name": "Deep Tree",
"results": {
"time": 904.4
}
},
{
"category": "Csharp > Alloc",
"name": "Duplicate",
"results": {
"time": 2405
}
},
{
"category": "Csharp > Alloc",
"name": "Fragmentation",
"results": {
"time": 9214
}
},
{
"category": "Csharp > Alloc",
"name": "Wide Tree",
"results": {
"time": 658
}
},
{
"category": "Csharp > Binary Trees",
"name": "Binary Trees 13",
"results": {
"time": 81.57
}
},
{
"category": "Csharp > Binary Trees",
"name": "Binary Trees 15",
"results": {
"time": 366.3
}
},
{
"category": "Csharp > Binary Trees",
"name": "Binary Trees 18",
"results": {
"time": 2220
}
},
{
"category": "Csharp > Hello World",
"name": "Hello World",
"results": {
"time": 0.222
}
},
{
"category": "Csharp > Lambda Performance",
"name": "Lambda Call",
"results": {
"time": 4.27
}
},
{
"category": "Csharp > Mandelbrot Set",
"name": "Mandelbrot Set",
"results": {
"time": 397.1
}
},
{
"category": "Csharp > Merkle Trees",
"name": "Merkle Trees 13",
"results": {
"time": 71.75
}
},
{
"category": "Csharp > Merkle Trees",
"name": "Merkle Trees 15",
"results": {
"time": 367.2
}
},
{
"category": "Csharp > Merkle Trees",
"name": "Merkle Trees 18",
"results": {
"time": 4393
}
},
{
"category": "Csharp > Nbody",
"name": "Nbody 1 000 000",
"results": {
"time": 389.9
}
},
{
"category": "Csharp > Nbody",
"name": "Nbody 500 000",
"results": {
"time": 193.8
}
},
{
"category": "Csharp > Spectral Norm",
"name": "Spectral Norm 100",
"results": {
"time": 4.813
}
},
{
"category": "Csharp > Spectral Norm",
"name": "Spectral Norm 1000",
"results": {
"time": 470.6
}
},
{
"category": "Csharp > Spectral Norm",
"name": "Spectral Norm 500",
"results": {
"time": 109.2
}
},
{
"category": "Csharp > String Checksum",
"name": "Md 5 Buffer Empty",
"results": {
"time": 892.2
}
},
{
"category": "Csharp > String Checksum",
"name": "Md 5 Buffer Non Empty",
"results": {
"time": 1274
}
},
{
"category": "Csharp > String Checksum",
"name": "Md 5 Text Empty",
"results": {
"time": 2452
}
},
{
"category": "Csharp > String Checksum",
"name": "Md 5 Text Non Empty",
"results": {
"time": 3028
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 1 Buffer Empty",
"results": {
"time": 1090
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 1 Buffer Non Empty",
"results": {
"time": 1246
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 1 Text Empty",
"results": {
"time": 3093
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 1 Text Non Empty",
"results": {
"time": 3219
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 256 Buffer Empty",
"results": {
"time": 1025
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 256 Buffer Non Empty",
"results": {
"time": 1188
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 256 Text Empty",
"results": {
"time": 4344
}
},
{
"category": "Csharp > String Checksum",
"name": "Sha 256 Text Non Empty",
"results": {
"time": 4495
}
},
{
"category": "Csharp > String Format",
"name": "Complex Variable Concatenate",
"results": {
"time": 567.1
}
},
{
"category": "Csharp > String Format",
"name": "Complex Variable Method",
"results": {
"time": 26090
}
},
{
"category": "Csharp > String Format",
"name": "Complex Variable Percent",
"results": {
"time": 527.6
}
},
{
"category": "Csharp > String Format",
"name": "No Op Constant Method",
"results": {
"time": 1260
}
},
{
"category": "Csharp > String Format",
"name": "Simple Constant Concatenate",
"results": {
"time": 2.985
}
},
{
"category": "Csharp > String Format",
"name": "Simple Constant Method",
"results": {
"time": 7633
}
},
{
"category": "Csharp > String Format",
"name": "Simple Constant Method Constant Dict",
"results": {
"time": 3043
}
},
{
"category": "Csharp > String Format",
"name": "Simple Constant Percent",
"results": {
"time": 3.059
}
},
{
"category": "Csharp > String Format",
"name": "Simple Variable Concatenate",
"results": {
"time": 34.28
}
},
{
"category": "Csharp > String Format",
"name": "Simple Variable Method",
"results": {
"time": 8307
}
},
{
"category": "Csharp > String Format",
"name": "Simple Variable Percent",
"results": {
"time": 50.01
}
},
{
"category": "Csharp > String Manipulation",
"name": "Begins With",
"results": {
"time": 45.48
}
},
{
"category": "Csharp > String Manipulation",
"name": "Bigrams",
"results": {
"time": 313.3
}
},
{
"category": "Csharp > String Manipulation",
"name": "Capitalize",
"results": {
"time": 2498
}
},
{
"category": "Csharp > String Manipulation",
"name": "Casecmp To",
"results": {
"time": 73.5
}
},
{
"category": "Csharp > String Manipulation",
"name": "Contains",
"results": {
"time": 14.96
}
},
{
"category": "Csharp > String Manipulation",
"name": "Count",
"results": {
"time": 121.5
}
},
{
"category": "Csharp > String Manipulation",
"name": "Countn",
"results": {
"time": 130.9
}
},
{
"category": "Csharp > String Manipulation",
"name": "Ends With",
"results": {
"time": 42.25
}
},
{
"category": "Csharp > String Manipulation",
"name": "Find",
"results": {
"time": 23.36
}
},
{
"category": "Csharp > String Manipulation",
"name": "Findn",
"results": {
"time": 19.71
}
},
{
"category": "Csharp > String Manipulation",
"name": "Insert",
"results": {
"time": 27.87
}
},
{
"category": "Csharp > String Manipulation",
"name": "Is Valid Filename",
"results": {
"time": 113.9
}
},
{
"category": "Csharp > String Manipulation",
"name": "Lpad",
"results": {
"time": 32.98
}
},
{
"category": "Csharp > String Manipulation",
"name": "Nocasecmp To",
"results": {
"time": 63.22
}
},
{
"category": "Csharp > String Manipulation",
"name": "Pad Decimals",
"results": {
"time": 291.9
}
},
{
"category": "Csharp > String Manipulation",
"name": "Pad Decimals Pre Constructed",
"results": {
"time": 51.4
}
},
{
"category": "Csharp > String Manipulation",
"name": "Pad Zeros",
"results": {
"time": 113.6
}
},
{
"category": "Csharp > String Manipulation",
"name": "Pad Zeros Pre Constructed",
"results": {
"time": 114.4
}
},
{
"category": "Csharp > String Manipulation",
"name": "Rfind",
"results": {
"time": 29.39
}
},
{
"category": "Csharp > String Manipulation",
"name": "Rfindn",
"results": {
"time": 65.1
}
},
{
"category": "Csharp > String Manipulation",
"name": "Rpad",
"results": {
"time": 38.79
}
},
{
"category": "Csharp > String Manipulation",
"name": "Similarity",
"results": {
"time": 561.6
}
},
{
"category": "Csharp > String Manipulation",
"name": "Simplify Path",
"results": {
"time": 2637
}
},
{
"category": "Csharp > String Manipulation",
"name": "Split",
"results": {
"time": 109.8
}
},
{
"category": "Csharp > String Manipulation",
"name": "Split Floats",
"results": {
"time": 683.7
}
},
{
"category": "Csharp > String Manipulation",
"name": "Substr",
"results": {
"time": 24.12
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Camel Case",
"results": {
"time": 2317
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Lower",
"results": {
"time": 51.38
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Pascal Case",
"results": {
"time": 3692
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Snake Case",
"results": {
"time": 2765
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Utf 16 Buffer",
"results": {
"time": 60.21
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Utf 32 Buffer",
"results": {
"time": 268.5
}
},
{
"category": "Csharp > String Manipulation",
"name": "To Utf 8 Buffer",
"results": {
"time": 34.16
}
},
{
"category": "Csharp > String Manipulation",
"name": "Uri Decode",
"results": {
"time": 206.6
}
},
{
"category": "Csharp > String Manipulation",
"name": "Uri Encode",
"results": {
"time": 274.9
}
},
{
"category": "Csharp > String Manipulation",
"name": "Validate Node Name",
"results": {
"time": 179.5
}
},
{
"category": "Csharp > String Manipulation",
"name": "Xml Escape",
"results": {
"time": 233.7
}
},
{
"category": "Csharp > String Manipulation",
"name": "Xml Unescape",
"results": {
"time": 6.415
}
}
],
"engine": {
"version": "v4.3.beta2.official",
"version_hash": "b75f0485ba15951b87f1d9a2d8dd0fcd55e178e4"
},
"system": {
"cpu_architecture": "x86_64",
"cpu_count": 12,
"cpu_name": "AMD Ryzen 5 1600 Six-Core Processor",
"os": "Linux"
}
}

GDScript benchmark results in comparison, on the same machine

{
"benchmarks": [
{
"category": "Gdscript > Alloc",
"name": "Deep Tree",
"results": {
"time": 336
}
},
{
"category": "Gdscript > Alloc",
"name": "Duplicate",
"results": {
"time": 2356
}
},
{
"category": "Gdscript > Alloc",
"name": "Fragmentation",
"results": {
"time": 4857
}
},
{
"category": "Gdscript > Alloc",
"name": "Wide Tree",
"results": {
"time": 313.2
}
},
{
"category": "Gdscript > Binary Trees",
"name": "Binary Trees 13",
"results": {
"time": 1075
}
},
{
"category": "Gdscript > Binary Trees",
"name": "Binary Trees 15",
"results": {
"time": 5204
}
},
{
"category": "Gdscript > Hello World",
"name": "Hello World",
"results": {
"time": 0.033
}
},
{
"category": "Gdscript > Lambda Performance",
"name": "Lambda Call",
"results": {
"time": 127.9
}
},
{
"category": "Gdscript > Mandelbrot Set",
"name": "Mandelbrot Set",
"results": {
"time": 10570
}
},
{
"category": "Gdscript > Merkle Trees",
"name": "Merkle Trees 13",
"results": {
"time": 4396
}
},
{
"category": "Gdscript > Merkle Trees",
"name": "Merkle Trees 15",
"results": {
"time": 22810
}
},
{
"category": "Gdscript > Nbody",
"name": "Nbody 1 000 000",
"results": {
"time": 16800
}
},
{
"category": "Gdscript > Nbody",
"name": "Nbody 500 000",
"results": {
"time": 8361
}
},
{
"category": "Gdscript > Spectral Norm",
"name": "Spectral Norm 100",
"results": {
"time": 143.1
}
},
{
"category": "Gdscript > Spectral Norm",
"name": "Spectral Norm 1000",
"results": {
"time": 13830
}
},
{
"category": "Gdscript > Spectral Norm",
"name": "Spectral Norm 500",
"results": {
"time": 3386
}
},
{
"category": "Gdscript > String Checksum",
"name": "Md 5 Buffer Empty",
"results": {
"time": 278.5
}
},
{
"category": "Gdscript > String Checksum",
"name": "Md 5 Buffer Non Empty",
"results": {
"time": 935.2
}
},
{
"category": "Gdscript > String Checksum",
"name": "Md 5 Text Empty",
"results": {
"time": 1038
}
},
{
"category": "Gdscript > String Checksum",
"name": "Md 5 Text Non Empty",
"results": {
"time": 1699
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 1 Buffer Empty",
"results": {
"time": 301.7
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 1 Buffer Non Empty",
"results": {
"time": 959.9
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 1 Text Empty",
"results": {
"time": 1181
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 1 Text Non Empty",
"results": {
"time": 1854
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 256 Buffer Empty",
"results": {
"time": 523.9
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 256 Buffer Non Empty",
"results": {
"time": 1656
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 256 Text Empty",
"results": {
"time": 1807
}
},
{
"category": "Gdscript > String Checksum",
"name": "Sha 256 Text Non Empty",
"results": {
"time": 2961
}
},
{
"category": "Gdscript > String Format",
"name": "Complex Variable Concatenate",
"results": {
"time": 2795
}
},
{
"category": "Gdscript > String Format",
"name": "Complex Variable Method",
"results": {
"time": 5753
}
},
{
"category": "Gdscript > String Format",
"name": "Complex Variable Percent",
"results": {
"time": 5678
}
},
{
"category": "Gdscript > String Format",
"name": "No Op Constant Method",
"results": {
"time": 227.2
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Constant Concatenate",
"results": {
"time": 16.29
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Constant Method",
"results": {
"time": 1197
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Constant Method Constant Dict",
"results": {
"time": 989.3
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Constant Percent",
"results": {
"time": 17.51
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Variable Concatenate",
"results": {
"time": 245.3
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Variable Method",
"results": {
"time": 1262
}
},
{
"category": "Gdscript > String Format",
"name": "Simple Variable Percent",
"results": {
"time": 787
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Begins With",
"results": {
"time": 35.67
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Bigrams",
"results": {
"time": 981.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Capitalize",
"results": {
"time": 2635
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Casecmp To",
"results": {
"time": 31.32
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Contains",
"results": {
"time": 33.08
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Contains Gdscript In",
"results": {
"time": 15.72
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Count",
"results": {
"time": 320.1
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Countn",
"results": {
"time": 707.9
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Ends With",
"results": {
"time": 37.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Find",
"results": {
"time": 113.5
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Findn",
"results": {
"time": 142.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Get Slice",
"results": {
"time": 132.5
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Get Slice Count",
"results": {
"time": 80.41
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Humanize Size",
"results": {
"time": 1257
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Insert",
"results": {
"time": 328.7
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Is Valid Filename",
"results": {
"time": 1477
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Lpad",
"results": {
"time": 245.9
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Naturalnocasecmp To",
"results": {
"time": 34.03
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Nocasecmp To",
"results": {
"time": 63.98
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Pad Decimals",
"results": {
"time": 924
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Pad Decimals Pre Constructed",
"results": {
"time": 112.7
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Pad Zeros",
"results": {
"time": 630.5
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Pad Zeros Pre Constructed",
"results": {
"time": 363.1
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Rfind",
"results": {
"time": 98.27
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Rfindn",
"results": {
"time": 357.6
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Rpad",
"results": {
"time": 187
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Rsplit",
"results": {
"time": 633.8
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Similarity",
"results": {
"time": 961.3
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Simplify Path",
"results": {
"time": 2022
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Split",
"results": {
"time": 594.4
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Split Floats",
"results": {
"time": 419.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Substr",
"results": {
"time": 93.82
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Camel Case",
"results": {
"time": 1681
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Lower",
"results": {
"time": 384.4
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Pascal Case",
"results": {
"time": 3011
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Snake Case",
"results": {
"time": 2069
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Utf 16 Buffer",
"results": {
"time": 169.7
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Utf 32 Buffer",
"results": {
"time": 107.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Utf 8 Buffer",
"results": {
"time": 181.2
}
},
{
"category": "Gdscript > String Manipulation",
"name": "To Wchar Buffer",
"results": {
"time": 115.8
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Uri Decode",
"results": {
"time": 626
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Uri Encode",
"results": {
"time": 614.5
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Validate Filename",
"results": {
"time": 2623
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Validate Node Name",
"results": {
"time": 154.4
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Xml Escape",
"results": {
"time": 870.6
}
},
{
"category": "Gdscript > String Manipulation",
"name": "Xml Unescape",
"results": {
"time": 111.2
}
}
],
"engine": {
"version": "v4.3.beta2.official",
"version_hash": "b75f0485ba15951b87f1d9a2d8dd0fcd55e178e4"
},
"system": {
"cpu_architecture": "x86_64",
"cpu_count": 12,
"cpu_name": "AMD Ryzen 5 1600 Six-Core Processor",
"os": "Linux"
}
}

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 on 4.3.rc2 .NET (rebased on top of master b8827a4), it works as expected.

Thanks a ton!

Results on my PC for reference with the 4.3.rc2 official Linux binary:

{"benchmarks":[{"category":"Csharp > Alloc","name":"Deep Tree","results":{"time":387.3}},{"category":"Csharp > Alloc","name":"Duplicate","results":{"time":934.2}},{"category":"Csharp > Alloc","name":"Fragmentation","results":{"time":3517}},{"category":"Csharp > Alloc","name":"Wide Tree","results":{"time":200.9}},{"category":"Csharp > Array","name":"Fill Loop","results":{"time":14.47}},{"category":"Csharp > Array","name":"Fill Method","results":{"time":86.12}},{"category":"Csharp > Binary Trees","name":"Binary Trees 13","results":{"time":55.17}},{"category":"Csharp > Binary Trees","name":"Binary Trees 15","results":{"time":86.51}},{"category":"Csharp > Binary Trees","name":"Binary Trees 18","results":{"time":757.2}},{"category":"Csharp > Control","name":"Control","results":{"time":0.04}},{"category":"Csharp > For Loop","name":"Loop Add","results":{"time":0.536}},{"category":"Csharp > For Loop","name":"Loop Call","results":{"time":1.175}},{"category":"Csharp > Hello World","name":"Hello World","results":{"time":0.084}},{"category":"Csharp > Lambda Performance","name":"Lambda Call","results":{"time":2.921}},{"category":"Csharp > List","name":"Color List","results":{"time":59.95}},{"category":"Csharp > List","name":"Float 32 List","results":{"time":29.61}},{"category":"Csharp > List","name":"Float 64 List","results":{"time":18.17}},{"category":"Csharp > List","name":"Int 32 List","results":{"time":12.82}},{"category":"Csharp > List","name":"Int 64 List","results":{"time":17.23}},{"category":"Csharp > List","name":"String List","results":{"time":232.4}},{"category":"Csharp > List","name":"Vector 2 List","results":{"time":29.55}},{"category":"Csharp > List","name":"Vector 3 List","results":{"time":45.96}},{"category":"Csharp > Mandelbrot Set","name":"Mandelbrot Set","results":{"time":168}},{"category":"Csharp > Merkle Trees","name":"Merkle Trees 13","results":{"time":32.82}},{"category":"Csharp > Merkle Trees","name":"Merkle Trees 15","results":{"time":127.3}},{"category":"Csharp > Merkle Trees","name":"Merkle Trees 18","results":{"time":1180}},{"category":"Csharp > Nbody","name":"Nbody 1 000 000","results":{"time":107.7}},{"category":"Csharp > Nbody","name":"Nbody 500 000","results":{"time":54.11}},{"category":"Csharp > Spectral Norm","name":"Spectral Norm 100","results":{"time":1.378}},{"category":"Csharp > Spectral Norm","name":"Spectral Norm 1000","results":{"time":102.9}},{"category":"Csharp > Spectral Norm","name":"Spectral Norm 500","results":{"time":25.88}},{"category":"Csharp > String Checksum","name":"Md 5 Buffer Empty","results":{"time":287.5}},{"category":"Csharp > String Checksum","name":"Md 5 Buffer Non Empty","results":{"time":471.4}},{"category":"Csharp > String Checksum","name":"Md 5 Text Empty","results":{"time":730}},{"category":"Csharp > String Checksum","name":"Md 5 Text Non Empty","results":{"time":890.1}},{"category":"Csharp > String Checksum","name":"Sha 1 Buffer Empty","results":{"time":327.1}},{"category":"Csharp > String Checksum","name":"Sha 1 Buffer Non Empty","results":{"time":423.2}},{"category":"Csharp > String Checksum","name":"Sha 1 Text Empty","results":{"time":881.4}},{"category":"Csharp > String Checksum","name":"Sha 1 Text Non Empty","results":{"time":971.4}},{"category":"Csharp > String Checksum","name":"Sha 256 Buffer Empty","results":{"time":307.1}},{"category":"Csharp > String Checksum","name":"Sha 256 Buffer Non Empty","results":{"time":415.7}},{"category":"Csharp > String Checksum","name":"Sha 256 Text Empty","results":{"time":1233}},{"category":"Csharp > String Checksum","name":"Sha 256 Text Non Empty","results":{"time":1332}},{"category":"Csharp > String Format","name":"Complex Variable Concatenate","results":{"time":251.6}},{"category":"Csharp > String Format","name":"Complex Variable Method","results":{"time":8754}},{"category":"Csharp > String Format","name":"Complex Variable Percent","results":{"time":228.8}},{"category":"Csharp > String Format","name":"No Op Constant Method","results":{"time":469.6}},{"category":"Csharp > String Format","name":"Simple Constant Concatenate","results":{"time":0.661}},{"category":"Csharp > String Format","name":"Simple Constant Method","results":{"time":3035}},{"category":"Csharp > String Format","name":"Simple Constant Method Constant Dict","results":{"time":1192}},{"category":"Csharp > String Format","name":"Simple Constant Percent","results":{"time":1.217}},{"category":"Csharp > String Format","name":"Simple Variable Concatenate","results":{"time":19.23}},{"category":"Csharp > String Format","name":"Simple Variable Method","results":{"time":2833}},{"category":"Csharp > String Format","name":"Simple Variable Percent","results":{"time":33.83}},{"category":"Csharp > String Manipulation","name":"Begins With","results":{"time":15.41}},{"category":"Csharp > String Manipulation","name":"Bigrams","results":{"time":112.5}},{"category":"Csharp > String Manipulation","name":"Capitalize","results":{"time":601.4}},{"category":"Csharp > String Manipulation","name":"Casecmp To","results":{"time":28.07}},{"category":"Csharp > String Manipulation","name":"Contains","results":{"time":4.096}},{"category":"Csharp > String Manipulation","name":"Count","results":{"time":35.05}},{"category":"Csharp > String Manipulation","name":"Countn","results":{"time":42.66}},{"category":"Csharp > String Manipulation","name":"Ends With","results":{"time":18.41}},{"category":"Csharp > String Manipulation","name":"Find","results":{"time":6.437}},{"category":"Csharp > String Manipulation","name":"Findn","results":{"time":7.523}},{"category":"Csharp > String Manipulation","name":"Insert","results":{"time":11.59}},{"category":"Csharp > String Manipulation","name":"Is Valid Filename","results":{"time":36.38}},{"category":"Csharp > String Manipulation","name":"Lpad","results":{"time":19.18}},{"category":"Csharp > String Manipulation","name":"Nocasecmp To","results":{"time":28.47}},{"category":"Csharp > String Manipulation","name":"Pad Decimals","results":{"time":78.28}},{"category":"Csharp > String Manipulation","name":"Pad Decimals Pre Constructed","results":{"time":14.61}},{"category":"Csharp > String Manipulation","name":"Pad Zeros","results":{"time":43.43}},{"category":"Csharp > String Manipulation","name":"Pad Zeros Pre Constructed","results":{"time":35.8}},{"category":"Csharp > String Manipulation","name":"Rfind","results":{"time":10.81}},{"category":"Csharp > String Manipulation","name":"Rfindn","results":{"time":28.05}},{"category":"Csharp > String Manipulation","name":"Rpad","results":{"time":21.81}},{"category":"Csharp > String Manipulation","name":"Similarity","results":{"time":143.5}},{"category":"Csharp > String Manipulation","name":"Simplify Path","results":{"time":1098}},{"category":"Csharp > String Manipulation","name":"Split","results":{"time":47.91}},{"category":"Csharp > String Manipulation","name":"Split Floats","results":{"time":228.6}},{"category":"Csharp > String Manipulation","name":"Substr","results":{"time":8.353}},{"category":"Csharp > String Manipulation","name":"To Camel Case","results":{"time":920.1}},{"category":"Csharp > String Manipulation","name":"To Lower","results":{"time":19.12}},{"category":"Csharp > String Manipulation","name":"To Pascal Case","results":{"time":1492}},{"category":"Csharp > String Manipulation","name":"To Snake Case","results":{"time":1127}},{"category":"Csharp > String Manipulation","name":"To Utf 16 Buffer","results":{"time":32.17}},{"category":"Csharp > String Manipulation","name":"To Utf 32 Buffer","results":{"time":101.7}},{"category":"Csharp > String Manipulation","name":"To Utf 8 Buffer","results":{"time":11.6}},{"category":"Csharp > String Manipulation","name":"Uri Decode","results":{"time":65.12}},{"category":"Csharp > String Manipulation","name":"Uri Encode","results":{"time":117.9}},{"category":"Csharp > String Manipulation","name":"Validate Node Name","results":{"time":47.66}},{"category":"Csharp > String Manipulation","name":"Xml Escape","results":{"time":80.98}},{"category":"Csharp > String Manipulation","name":"Xml Unescape","results":{"time":2.243}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Circles","results":{"idle":118.5,"physics":7.837,"time":16.47}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Continuous","results":{"idle":48.49,"physics":9.821,"time":12.48}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Mixed","results":{"idle":59.17,"physics":8.814,"time":12.22}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Squares","results":{"idle":58.52,"physics":9.721,"time":12.13}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Unbound","results":{"idle":60.65,"physics":9.604,"time":12.34}},{"category":"Csharp > Physics > Rigid Body 2d","name":"2000 Rigid Body 2d Unique","results":{"idle":24.71,"physics":8.968,"time":14.68}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Circles","results":{"idle":206.7,"physics":21.68,"time":22.47}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Continuous","results":{"idle":24.21,"physics":22.83,"time":14.63}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Mixed","results":{"idle":31.29,"physics":22.7,"time":19.68}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Squares","results":{"idle":24.83,"physics":25.42,"time":14.77}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Unbound","results":{"idle":24.56,"physics":14.67,"time":16.3}},{"category":"Csharp > Physics > Rigid Body 3d","name":"2000 Rigid Body 3d Unique","results":{"idle":31.61,"physics":22.75,"time":21.83}}],"engine":{"version":"v4.3.rc2.official","version_hash":"3978628c6cc1227250fc6ed45c8d854d24c30c30"},"system":{"cpu_architecture":"x86_64","cpu_count":32,"cpu_name":"13th Gen Intel(R) Core(TM) i9-13900K","os":"Linux"}}

GDScript for comparison:

{"benchmarks":[{"category":"Gdscript > Alloc","name":"Deep Tree","results":{"time":139.5}},{"category":"Gdscript > Alloc","name":"Duplicate","results":{"time":918}},{"category":"Gdscript > Alloc","name":"Fragmentation","results":{"time":1883}},{"category":"Gdscript > Alloc","name":"Wide Tree","results":{"time":101.2}},{"category":"Gdscript > Array","name":"Fill Loop","results":{"time":177.7}},{"category":"Gdscript > Array","name":"Fill Method","results":{"time":74.72}},{"category":"Gdscript > Array","name":"Packed Color Array","results":{"time":115.3}},{"category":"Gdscript > Array","name":"Packed Float 32 Array","results":{"time":78.45}},{"category":"Gdscript > Array","name":"Packed Float 64 Array","results":{"time":78.11}},{"category":"Gdscript > Array","name":"Packed Int 32 Array","results":{"time":64.9}},{"category":"Gdscript > Array","name":"Packed Int 64 Array","results":{"time":64.11}},{"category":"Gdscript > Array","name":"Packed String Array","results":{"time":443}},{"category":"Gdscript > Array","name":"Packed Vector 2 Array","results":{"time":95.46}},{"category":"Gdscript > Array","name":"Packed Vector 3 Array","results":{"time":108.4}},{"category":"Gdscript > Array","name":"Typed Color Array","results":{"time":151.7}},{"category":"Gdscript > Array","name":"Typed Float Array","results":{"time":108}},{"category":"Gdscript > Array","name":"Typed Int Array","results":{"time":100.9}},{"category":"Gdscript > Array","name":"Typed String Array","results":{"time":483.9}},{"category":"Gdscript > Array","name":"Typed Vector 2 Array","results":{"time":130.8}},{"category":"Gdscript > Array","name":"Typed Vector 3 Array","results":{"time":143.7}},{"category":"Gdscript > Array","name":"Untyped Color Array","results":{"time":215.2}},{"category":"Gdscript > Array","name":"Untyped Float Array","results":{"time":165.7}},{"category":"Gdscript > Array","name":"Untyped Int Array","results":{"time":165.3}},{"category":"Gdscript > Array","name":"Untyped String Array","results":{"time":561.3}},{"category":"Gdscript > Array","name":"Untyped Vector 2 Array","results":{"time":209}},{"category":"Gdscript > Array","name":"Untyped Vector 3 Array","results":{"time":210.8}},{"category":"Gdscript > Binary Trees","name":"Binary Trees 13","results":{"time":445.9}},{"category":"Gdscript > Binary Trees","name":"Binary Trees 15","results":{"time":2168}},{"category":"Gdscript > Control","name":"Control","results":{"time":0.003}},{"category":"Gdscript > For Loop","name":"For Loop Add","results":{"time":6.744}},{"category":"Gdscript > For Loop","name":"For Loop Call","results":{"time":59.98}},{"category":"Gdscript > Hello World","name":"Hello World","results":{"time":0.01}},{"category":"Gdscript > Lambda Performance","name":"Lambda Call","results":{"time":32.26}},{"category":"Gdscript > Mandelbrot Set","name":"Mandelbrot Set","results":{"time":2161}},{"category":"Gdscript > Merkle Trees","name":"Merkle Trees 13","results":{"time":1502}},{"category":"Gdscript > Merkle Trees","name":"Merkle Trees 15","results":{"time":7583}},{"category":"Gdscript > Nbody","name":"Nbody 1 000 000","results":{"time":4420}},{"category":"Gdscript > Nbody","name":"Nbody 500 000","results":{"time":2174}},{"category":"Gdscript > Spectral Norm","name":"Spectral Norm 100","results":{"time":40.88}},{"category":"Gdscript > Spectral Norm","name":"Spectral Norm 1000","results":{"time":3952}},{"category":"Gdscript > Spectral Norm","name":"Spectral Norm 500","results":{"time":991.9}},{"category":"Gdscript > String Checksum","name":"Md 5 Buffer Empty","results":{"time":146.5}},{"category":"Gdscript > String Checksum","name":"Md 5 Buffer Non Empty","results":{"time":457.1}},{"category":"Gdscript > String Checksum","name":"Md 5 Text Empty","results":{"time":538.2}},{"category":"Gdscript > String Checksum","name":"Md 5 Text Non Empty","results":{"time":855.3}},{"category":"Gdscript > String Checksum","name":"Sha 1 Buffer Empty","results":{"time":136.1}},{"category":"Gdscript > String Checksum","name":"Sha 1 Buffer Non Empty","results":{"time":433.6}},{"category":"Gdscript > String Checksum","name":"Sha 1 Text Empty","results":{"time":590.4}},{"category":"Gdscript > String Checksum","name":"Sha 1 Text Non Empty","results":{"time":895.1}},{"category":"Gdscript > String Checksum","name":"Sha 256 Buffer Empty","results":{"time":221.5}},{"category":"Gdscript > String Checksum","name":"Sha 256 Buffer Non Empty","results":{"time":714.5}},{"category":"Gdscript > String Checksum","name":"Sha 256 Text Empty","results":{"time":935.1}},{"category":"Gdscript > String Checksum","name":"Sha 256 Text Non Empty","results":{"time":1369}},{"category":"Gdscript > String Format","name":"Complex Variable Concatenate","results":{"time":1301}},{"category":"Gdscript > String Format","name":"Complex Variable Method","results":{"time":2678}},{"category":"Gdscript > String Format","name":"Complex Variable Percent","results":{"time":2685}},{"category":"Gdscript > String Format","name":"No Op Constant Method","results":{"time":130.7}},{"category":"Gdscript > String Format","name":"Simple Constant Concatenate","results":{"time":3.355}},{"category":"Gdscript > String Format","name":"Simple Constant Method","results":{"time":656.2}},{"category":"Gdscript > String Format","name":"Simple Constant Method Constant Dict","results":{"time":499.6}},{"category":"Gdscript > String Format","name":"Simple Constant Percent","results":{"time":3.291}},{"category":"Gdscript > String Format","name":"Simple Variable Concatenate","results":{"time":151.5}},{"category":"Gdscript > String Format","name":"Simple Variable Method","results":{"time":655.3}},{"category":"Gdscript > String Format","name":"Simple Variable Percent","results":{"time":443.6}},{"category":"Gdscript > String Manipulation","name":"Begins With","results":{"time":8.679}},{"category":"Gdscript > String Manipulation","name":"Bigrams","results":{"time":631.1}},{"category":"Gdscript > String Manipulation","name":"Capitalize","results":{"time":1187}},{"category":"Gdscript > String Manipulation","name":"Casecmp To","results":{"time":8.484}},{"category":"Gdscript > String Manipulation","name":"Contains","results":{"time":9.737}},{"category":"Gdscript > String Manipulation","name":"Contains Gdscript In","results":{"time":3.31}},{"category":"Gdscript > String Manipulation","name":"Count","results":{"time":157}},{"category":"Gdscript > String Manipulation","name":"Countn","results":{"time":292.9}},{"category":"Gdscript > String Manipulation","name":"Ends With","results":{"time":10.66}},{"category":"Gdscript > String Manipulation","name":"Find","results":{"time":32.48}},{"category":"Gdscript > String Manipulation","name":"Findn","results":{"time":46.35}},{"category":"Gdscript > String Manipulation","name":"Get Slice","results":{"time":61.4}},{"category":"Gdscript > String Manipulation","name":"Get Slice Count","results":{"time":23.98}},{"category":"Gdscript > String Manipulation","name":"Humanize Size","results":{"time":550.4}},{"category":"Gdscript > String Manipulation","name":"Insert","results":{"time":200.6}},{"category":"Gdscript > String Manipulation","name":"Is Valid Filename","results":{"time":754.3}},{"category":"Gdscript > String Manipulation","name":"Lpad","results":{"time":164}},{"category":"Gdscript > String Manipulation","name":"Naturalnocasecmp To","results":{"time":9.141}},{"category":"Gdscript > String Manipulation","name":"Nocasecmp To","results":{"time":19.87}},{"category":"Gdscript > String Manipulation","name":"Pad Decimals","results":{"time":307.7}},{"category":"Gdscript > String Manipulation","name":"Pad Decimals Pre Constructed","results":{"time":59.74}},{"category":"Gdscript > String Manipulation","name":"Pad Zeros","results":{"time":316.6}},{"category":"Gdscript > String Manipulation","name":"Pad Zeros Pre Constructed","results":{"time":209.4}},{"category":"Gdscript > String Manipulation","name":"Rfind","results":{"time":33.34}},{"category":"Gdscript > String Manipulation","name":"Rfindn","results":{"time":143.7}},{"category":"Gdscript > String Manipulation","name":"Rpad","results":{"time":119.9}},{"category":"Gdscript > String Manipulation","name":"Rsplit","results":{"time":355.2}},{"category":"Gdscript > String Manipulation","name":"Similarity","results":{"time":546.8}},{"category":"Gdscript > String Manipulation","name":"Simplify Path","results":{"time":998.8}},{"category":"Gdscript > String Manipulation","name":"Split","results":{"time":323}},{"category":"Gdscript > String Manipulation","name":"Split Floats","results":{"time":170.1}},{"category":"Gdscript > String Manipulation","name":"Substr","results":{"time":48.83}},{"category":"Gdscript > String Manipulation","name":"To Camel Case","results":{"time":744.8}},{"category":"Gdscript > String Manipulation","name":"To Lower","results":{"time":156.5}},{"category":"Gdscript > String Manipulation","name":"To Pascal Case","results":{"time":1352}},{"category":"Gdscript > String Manipulation","name":"To Snake Case","results":{"time":968.6}},{"category":"Gdscript > String Manipulation","name":"To Utf 16 Buffer","results":{"time":109.6}},{"category":"Gdscript > String Manipulation","name":"To Utf 32 Buffer","results":{"time":74}},{"category":"Gdscript > String Manipulation","name":"To Utf 8 Buffer","results":{"time":110.1}},{"category":"Gdscript > String Manipulation","name":"To Wchar Buffer","results":{"time":74.17}},{"category":"Gdscript > String Manipulation","name":"Uri Decode","results":{"time":246.1}},{"category":"Gdscript > String Manipulation","name":"Uri Encode","results":{"time":258.5}},{"category":"Gdscript > String Manipulation","name":"Validate Filename","results":{"time":1342}},{"category":"Gdscript > String Manipulation","name":"Validate Node Name","results":{"time":74.22}},{"category":"Gdscript > String Manipulation","name":"Xml Escape","results":{"time":415}},{"category":"Gdscript > String Manipulation","name":"Xml Unescape","results":{"time":54.11}}],"engine":{"version":"v4.3.rc2.official","version_hash":"3978628c6cc1227250fc6ed45c8d854d24c30c30"},"system":{"cpu_architecture":"x86_64","cpu_count":32,"cpu_name":"13th Gen Intel(R) Core(TM) i9-13900K","os":"Linux"}}

@Calinou Calinou merged commit bfd8458 into godotengine:main Aug 4, 2024
@OverloadedOrama OverloadedOrama deleted the csharp-ports branch August 4, 2024 22:54
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.

2 participants