Skip to content

Commit 0e12cc3

Browse files
committed
Added BDN for all Sorted Set commands
1 parent a160787 commit 0e12cc3

File tree

3 files changed

+167
-12
lines changed

3 files changed

+167
-12
lines changed

.github/workflows/ci-bdnbenchmark.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
os: [ ubuntu-latest, windows-latest ]
4343
framework: [ 'net8.0' ]
4444
configuration: [ 'Release' ]
45-
test: [ 'Operations.BasicOperations', 'Operations.ObjectOperations', 'Operations.HashObjectOperations', 'Cluster.ClusterMigrate', 'Cluster.ClusterOperations', 'Lua.LuaScripts', 'Lua.LuaScriptCacheOperations','Lua.LuaRunnerOperations','Operations.CustomOperations', 'Operations.RawStringOperations', 'Operations.ScriptOperations', 'Operations.ModuleOperations', 'Operations.PubSubOperations', 'Network.BasicOperations', 'Network.RawStringOperations' ]
45+
test: [ 'Operations.BasicOperations', 'Operations.ObjectOperations', 'Operations.HashObjectOperations', 'Operations.SortedSetOperations', 'Cluster.ClusterMigrate', 'Cluster.ClusterOperations', 'Lua.LuaScripts', 'Lua.LuaScriptCacheOperations','Lua.LuaRunnerOperations','Operations.CustomOperations', 'Operations.RawStringOperations', 'Operations.ScriptOperations', 'Operations.ModuleOperations', 'Operations.PubSubOperations', 'Network.BasicOperations', 'Network.RawStringOperations' ]
4646
steps:
4747
- name: Check out code
4848
uses: actions/checkout@v4

benchmark/BDN.benchmark/Operations/ObjectOperations.cs

-11
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ namespace BDN.benchmark.Operations
1212
[MemoryDiagnoser]
1313
public unsafe class ObjectOperations : OperationsBase
1414
{
15-
static ReadOnlySpan<byte> ZADDREM => "*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nc\r\n*3\r\n$4\r\nZREM\r\n$1\r\nc\r\n$1\r\nc\r\n"u8;
16-
Request zAddRem;
17-
1815
static ReadOnlySpan<byte> LPUSHPOP => "*3\r\n$5\r\nLPUSH\r\n$1\r\nd\r\n$1\r\ne\r\n*2\r\n$4\r\nLPOP\r\n$1\r\nd\r\n"u8;
1916
Request lPushPop;
2017

@@ -25,22 +22,14 @@ public override void GlobalSetup()
2522
{
2623
base.GlobalSetup();
2724

28-
SetupOperation(ref zAddRem, ZADDREM);
2925
SetupOperation(ref lPushPop, LPUSHPOP);
3026
SetupOperation(ref sAddRem, SADDREM);
3127

3228
// Pre-populate data
33-
SlowConsumeMessage("*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8);
3429
SlowConsumeMessage("*3\r\n$5\r\nLPUSH\r\n$1\r\nd\r\n$1\r\nf\r\n"u8);
3530
SlowConsumeMessage("*3\r\n$4\r\nSADD\r\n$1\r\ne\r\n$1\r\nb\r\n"u8);
3631
}
3732

38-
[Benchmark]
39-
public void ZAddRem()
40-
{
41-
Send(zAddRem);
42-
}
43-
4433
[Benchmark]
4534
public void LPushPop()
4635
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT license.
3+
4+
using BenchmarkDotNet.Attributes;
5+
using Embedded.server;
6+
7+
namespace BDN.benchmark.Operations
8+
{
9+
/// <summary>
10+
/// Benchmark for SortedSetOperations
11+
/// </summary>
12+
[MemoryDiagnoser]
13+
public unsafe class SortedSetOperations : OperationsBase
14+
{
15+
static ReadOnlySpan<byte> ZADDREM => "*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nc\r\n*3\r\n$4\r\nZREM\r\n$1\r\nc\r\n$1\r\nc\r\n"u8;
16+
static ReadOnlySpan<byte> ZCARD => "*2\r\n$5\r\nZCARD\r\n$1\r\nc\r\n"u8;
17+
static ReadOnlySpan<byte> ZCOUNT => "*4\r\n$6\r\nZCOUNT\r\n$1\r\nc\r\n$1\r\n0\r\n$1\r\n2\r\n"u8;
18+
static ReadOnlySpan<byte> ZDIFF => "*4\r\n$5\r\nZDIFF\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
19+
static ReadOnlySpan<byte> ZDIFFSTORE => "*5\r\n$10\r\nZDIFFSTORE\r\n$4\r\ndest\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
20+
static ReadOnlySpan<byte> ZINCRBY => "*4\r\n$7\r\nZINCRBY\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
21+
static ReadOnlySpan<byte> ZINTER => "*4\r\n$6\r\nZINTER\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
22+
static ReadOnlySpan<byte> ZINTERCARD => "*4\r\n$10\r\nZINTERCARD\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
23+
static ReadOnlySpan<byte> ZINTERSTORE => "*5\r\n$11\r\nZINTERSTORE\r\n$4\r\ndest\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
24+
static ReadOnlySpan<byte> ZLEXCOUNT => "*4\r\n$9\r\nZLEXCOUNT\r\n$1\r\nc\r\n$1\r\n-\r\n$1\r\n+\r\n"u8;
25+
static ReadOnlySpan<byte> ZMPOP => "*4\r\n$5\r\nZMPOP\r\n$1\r\n1\r\n$1\r\nc\r\n$3\r\nMIN\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
26+
static ReadOnlySpan<byte> ZMSCORE => "*3\r\n$7\r\nZMSCORE\r\n$1\r\nc\r\n$1\r\nd\r\n"u8;
27+
static ReadOnlySpan<byte> ZPOPMAX => "*2\r\n$7\r\nZPOPMAX\r\n$1\r\nc\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
28+
static ReadOnlySpan<byte> ZPOPMIN => "*2\r\n$7\r\nZPOPMIN\r\n$1\r\nc\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
29+
static ReadOnlySpan<byte> ZRANDMEMBER => "*2\r\n$10\r\nZRANDMEMBER\r\n$1\r\nc\r\n"u8;
30+
static ReadOnlySpan<byte> ZRANGE => "*4\r\n$6\r\nZRANGE\r\n$1\r\nc\r\n$1\r\n0\r\n$1\r\n1\r\n"u8;
31+
static ReadOnlySpan<byte> ZRANGESTORE => "*5\r\n$11\r\nZRANGESTORE\r\n$4\r\ndest\r\n$1\r\nc\r\n$1\r\n0\r\n$1\r\n1\r\n"u8;
32+
static ReadOnlySpan<byte> ZRANK => "*3\r\n$5\r\nZRANK\r\n$1\r\nc\r\n$1\r\nd\r\n"u8;
33+
static ReadOnlySpan<byte> ZREMRANGEBYLEX => "*4\r\n$14\r\nZREMRANGEBYLEX\r\n$1\r\nc\r\n$1\r\n-\r\n$1\r\n+\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
34+
static ReadOnlySpan<byte> ZREMRANGEBYRANK => "*4\r\n$15\r\nZREMRANGEBYRANK\r\n$1\r\nc\r\n$1\r\n0\r\n$1\r\n1\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
35+
static ReadOnlySpan<byte> ZREMRANGEBYSCORE => "*4\r\n$16\r\nZREMRANGEBYSCORE\r\n$1\r\nc\r\n$1\r\n0\r\n$1\r\n2\r\n*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8;
36+
static ReadOnlySpan<byte> ZREVRANK => "*3\r\n$8\r\nZREVRANK\r\n$1\r\nc\r\n$1\r\nd\r\n"u8;
37+
static ReadOnlySpan<byte> ZSCAN => "*6\r\n$5\r\nZSCAN\r\n$1\r\nc\r\n$1\r\n0\r\n$5\r\nCOUNT\r\n$1\r\n5\r\n"u8;
38+
static ReadOnlySpan<byte> ZSCORE => "*3\r\n$6\r\nZSCORE\r\n$1\r\nc\r\n$1\r\nd\r\n"u8;
39+
static ReadOnlySpan<byte> ZUNION => "*4\r\n$6\r\nZUNION\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
40+
static ReadOnlySpan<byte> ZUNIONSTORE => "*5\r\n$11\r\nZUNIONSTORE\r\n$4\r\ndest\r\n$1\r\n2\r\n$1\r\nc\r\n$1\r\nh\r\n"u8;
41+
42+
Request zAddRem, zCard, zCount, zDiff, zDiffStore, zIncrby, zInter, zInterCard,
43+
zInterStore, zLexCount, zMPop, zMScore, zPopMax, zPopMin,
44+
zRandMember, zRange, zRangeStore, zRank, zRemRangeByLex,
45+
zRemRangeByRank, zRemRangeByScore, zRevRank, zScan,
46+
zScore, zUnion, zUnionStore;
47+
48+
public override void GlobalSetup()
49+
{
50+
base.GlobalSetup();
51+
52+
SetupOperation(ref zAddRem, ZADDREM);
53+
SetupOperation(ref zCard, ZCARD);
54+
SetupOperation(ref zCount, ZCOUNT);
55+
SetupOperation(ref zDiff, ZDIFF);
56+
SetupOperation(ref zDiffStore, ZDIFFSTORE);
57+
SetupOperation(ref zIncrby, ZINCRBY);
58+
SetupOperation(ref zInter, ZINTER);
59+
SetupOperation(ref zInterCard, ZINTERCARD);
60+
SetupOperation(ref zInterStore, ZINTERSTORE);
61+
SetupOperation(ref zLexCount, ZLEXCOUNT);
62+
SetupOperation(ref zMPop, ZMPOP);
63+
SetupOperation(ref zMScore, ZMSCORE);
64+
SetupOperation(ref zPopMax, ZPOPMAX);
65+
SetupOperation(ref zPopMin, ZPOPMIN);
66+
SetupOperation(ref zRandMember, ZRANDMEMBER);
67+
SetupOperation(ref zRange, ZRANGE);
68+
SetupOperation(ref zRangeStore, ZRANGESTORE);
69+
SetupOperation(ref zRank, ZRANK);
70+
SetupOperation(ref zRemRangeByLex, ZREMRANGEBYLEX);
71+
SetupOperation(ref zRemRangeByRank, ZREMRANGEBYRANK);
72+
SetupOperation(ref zRemRangeByScore, ZREMRANGEBYSCORE);
73+
SetupOperation(ref zRevRank, ZREVRANK);
74+
SetupOperation(ref zScan, ZSCAN);
75+
SetupOperation(ref zScore, ZSCORE);
76+
SetupOperation(ref zUnion, ZUNION);
77+
SetupOperation(ref zUnionStore, ZUNIONSTORE);
78+
79+
// Pre-populate data for two sorted sets
80+
SlowConsumeMessage("*4\r\n$4\r\nZADD\r\n$1\r\nc\r\n$1\r\n1\r\n$1\r\nd\r\n"u8);
81+
SlowConsumeMessage("*6\r\n$4\r\nZADD\r\n$1\r\nh\r\n$1\r\n1\r\n$1\r\nd\r\n$1\r\n2\r\n$1\r\ne\r\n"u8);
82+
SlowConsumeMessage("*4\r\n$4\r\nZADD\r\n$4\r\ndest\r\n$1\r\n1\r\n$1\r\nd\r\n"u8);
83+
}
84+
85+
[Benchmark]
86+
public void ZAddRem()
87+
{
88+
Send(zAddRem);
89+
}
90+
91+
[Benchmark]
92+
public void ZCard() => Send(zCard);
93+
94+
[Benchmark]
95+
public void ZCount() => Send(zCount);
96+
97+
[Benchmark]
98+
public void ZDiff() => Send(zDiff);
99+
100+
[Benchmark]
101+
public void ZDiffStore() => Send(zDiffStore);
102+
103+
[Benchmark]
104+
public void ZIncrby() => Send(zIncrby);
105+
106+
[Benchmark]
107+
public void ZInter() => Send(zInter);
108+
109+
[Benchmark]
110+
public void ZInterCard() => Send(zInterCard);
111+
112+
[Benchmark]
113+
public void ZInterStore() => Send(zInterStore);
114+
115+
[Benchmark]
116+
public void ZLexCount() => Send(zLexCount);
117+
118+
[Benchmark]
119+
public void ZMPop() => Send(zMPop);
120+
121+
[Benchmark]
122+
public void ZMScore() => Send(zMScore);
123+
124+
[Benchmark]
125+
public void ZPopMax() => Send(zPopMax);
126+
127+
[Benchmark]
128+
public void ZPopMin() => Send(zPopMin);
129+
130+
[Benchmark]
131+
public void ZRandMember() => Send(zRandMember);
132+
133+
[Benchmark]
134+
public void ZRange() => Send(zRange);
135+
136+
[Benchmark]
137+
public void ZRangeStore() => Send(zRangeStore);
138+
139+
[Benchmark]
140+
public void ZRank() => Send(zRank);
141+
142+
[Benchmark]
143+
public void ZRemRangeByLex() => Send(zRemRangeByLex);
144+
145+
[Benchmark]
146+
public void ZRemRangeByRank() => Send(zRemRangeByRank);
147+
148+
[Benchmark]
149+
public void ZRemRangeByScore() => Send(zRemRangeByScore);
150+
151+
[Benchmark]
152+
public void ZRevRank() => Send(zRevRank);
153+
154+
[Benchmark]
155+
public void ZScan() => Send(zScan);
156+
157+
[Benchmark]
158+
public void ZScore() => Send(zScore);
159+
160+
[Benchmark]
161+
public void ZUnion() => Send(zUnion);
162+
163+
[Benchmark]
164+
public void ZUnionStore() => Send(zUnionStore);
165+
}
166+
}

0 commit comments

Comments
 (0)