Skip to content

Commit

Permalink
Migrate bench-cs to the new API
Browse files Browse the repository at this point in the history
I think it got missed in #1719. Migrated myself to the new API and added it to the solution.
  • Loading branch information
RReverser committed Sep 30, 2024
1 parent 0375bcb commit a060fdd
Show file tree
Hide file tree
Showing 5 changed files with 288 additions and 223 deletions.
7 changes: 7 additions & 0 deletions crates/bindings-csharp/SpacetimeSharpSATS.sln
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spacetimedb-quickstart-serv
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sdk-tests", "sdk-tests", "{D39E8203-6C3C-4C4B-9C7D-7911AA19D7CC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "benchmarks-cs", "..\..\modules\benchmarks-cs\benchmarks-cs.csproj", "{50E1AAE1-C42C-4C2F-B708-5190B0362165}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -61,6 +63,10 @@ Global
{FDACD960-168E-44F9-B036-2E29EA391BE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FDACD960-168E-44F9-B036-2E29EA391BE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FDACD960-168E-44F9-B036-2E29EA391BE7}.Release|Any CPU.Build.0 = Release|Any CPU
{50E1AAE1-C42C-4C2F-B708-5190B0362165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50E1AAE1-C42C-4C2F-B708-5190B0362165}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50E1AAE1-C42C-4C2F-B708-5190B0362165}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50E1AAE1-C42C-4C2F-B708-5190B0362165}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -69,6 +75,7 @@ Global
{5393711C-44B0-4752-B8D0-852C73D6866F} = {D39E8203-6C3C-4C4B-9C7D-7911AA19D7CC}
{40F1C615-EDD9-463F-A012-B232F6710FA5} = {D39E8203-6C3C-4C4B-9C7D-7911AA19D7CC}
{FDACD960-168E-44F9-B036-2E29EA391BE7} = {D39E8203-6C3C-4C4B-9C7D-7911AA19D7CC}
{50E1AAE1-C42C-4C2F-B708-5190B0362165} = {D39E8203-6C3C-4C4B-9C7D-7911AA19D7CC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8A5DE392-1C9D-4806-B6C7-EDD4D33C5D1E}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetName>StdbModule</TargetName>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>wasi-wasm</RuntimeIdentifier>
<ImplicitUsings>enable</ImplicitUsings>
Expand Down
55 changes: 28 additions & 27 deletions modules/benchmarks-cs/circles.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

using SpacetimeDB;

namespace Benchmarks;

public static partial class circles
{
[SpacetimeDB.Type]
Expand All @@ -14,7 +14,8 @@ public partial struct Vector2(float x, float y)
[SpacetimeDB.Table]
public partial struct Entity(uint id, float x, float y, uint mass)
{
[SpacetimeDB.Column(ColumnAttrs.PrimaryKeyAuto)]
[AutoInc]
[PrimaryKey]
public uint id = id;
public Vector2 position = new(x, y);
public uint mass = mass;
Expand All @@ -23,10 +24,10 @@ public partial struct Entity(uint id, float x, float y, uint mass)
[SpacetimeDB.Table]
public partial struct Circle(uint entity_id, uint player_id, float x, float y, float magnitude)
{
[SpacetimeDB.Column(ColumnAttrs.PrimaryKey)]
[PrimaryKey]
public uint entity_id = entity_id;

[SpacetimeDB.Column(ColumnAttrs.Indexed)]
[Indexed]
public uint player_id = player_id;

public Vector2 direction = new(x, y);
Expand All @@ -37,7 +38,7 @@ public partial struct Circle(uint entity_id, uint player_id, float x, float y, f
[SpacetimeDB.Table]
public partial struct Food(uint entity_id)
{
[SpacetimeDB.Column(ColumnAttrs.PrimaryKey)]
[PrimaryKey]
public uint entity_id = entity_id;
}

Expand All @@ -59,44 +60,44 @@ public static bool IsOverlapping(Entity entity1, Entity entity2)
}

[SpacetimeDB.Reducer]
public static void insert_bulk_entity(uint count)
public static void insert_bulk_entity(ReducerContext ctx, uint count)
{
for (uint id = 0; id < count; id++)
{
new Entity(0, id, id + 5, id * 5).Insert();
ctx.Db.Entity.Insert(new(0, id, id + 5, id * 5));
}
Log.Info($"INSERT ENTITY: {count}");
}

[SpacetimeDB.Reducer]
public static void insert_bulk_circle(uint count)
public static void insert_bulk_circle(ReducerContext ctx, uint count)
{
for (uint id = 0; id < count; id++)
{
new Circle(id, id, id, id + 5, id * 5).Insert();
ctx.Db.Circle.Insert(new(id, id, id, id + 5, id * 5));
}
Log.Info($"INSERT CIRCLE: {count}");
}

[SpacetimeDB.Reducer]
public static void insert_bulk_food(uint count)
public static void insert_bulk_food(ReducerContext ctx, uint count)
{
for (uint id = 1; id <= count; id++)
{
new Food(id).Insert();
ctx.Db.Food.Insert(new(id));
}
Log.Info($"INSERT FOOD: {count}");
}

[SpacetimeDB.Reducer]
public static void cross_join_all(uint expected)
public static void cross_join_all(ReducerContext ctx, uint expected)
{
uint count = 0;
foreach (Circle circle in Circle.Iter())
foreach (Circle circle in ctx.Db.Circle.Iter())
{
foreach (Entity entity in Entity.Iter())
foreach (Entity entity in ctx.Db.Entity.Iter())
{
foreach (Food food in Food.Iter())
foreach (Food food in ctx.Db.Food.Iter())
{
count++;
}
Expand All @@ -107,21 +108,21 @@ public static void cross_join_all(uint expected)
}

[SpacetimeDB.Reducer]
public static void cross_join_circle_food(uint expected)
public static void cross_join_circle_food(ReducerContext ctx, uint expected)
{
uint count = 0;
foreach (Circle circle in Circle.Iter())
foreach (Circle circle in ctx.Db.Circle.Iter())
{
if (Entity.FindByid(circle.entity_id) is not { } circle_entity)
if (ctx.Db.Entity.FindByid(circle.entity_id) is not { } circle_entity)
{
continue;
}

foreach (Food food in Food.Iter())
foreach (Food food in ctx.Db.Food.Iter())
{
count++;
Entity food_entity =
Entity.FindByid(food.entity_id)
ctx.Db.Entity.FindByid(food.entity_id)
?? throw new Exception($"Entity not found: {food.entity_id}");
Bench.BlackBox(IsOverlapping(circle_entity, food_entity));
}
Expand All @@ -131,21 +132,21 @@ public static void cross_join_circle_food(uint expected)
}

[SpacetimeDB.Reducer]
public static void init_game_circles(uint initial_load)
public static void init_game_circles(ReducerContext ctx, uint initial_load)
{
Load load = new(initial_load);

insert_bulk_food(load.initial_load);
insert_bulk_entity(load.initial_load);
insert_bulk_circle(load.small_table);
insert_bulk_food(ctx, load.initial_load);
insert_bulk_entity(ctx, load.initial_load);
insert_bulk_circle(ctx, load.small_table);
}

[SpacetimeDB.Reducer]
public static void run_game_circles(uint initial_load)
public static void run_game_circles(ReducerContext ctx, uint initial_load)
{
Load load = new(initial_load);

cross_join_circle_food(initial_load * load.small_table);
cross_join_all(initial_load * initial_load * load.small_table);
cross_join_circle_food(ctx, initial_load * load.small_table);
cross_join_all(ctx, initial_load * initial_load * load.small_table);
}
}
Loading

0 comments on commit a060fdd

Please sign in to comment.