A game framework written with osu! in mind.
1// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2// See the LICENCE file in the repository root for full licence text.
3
4using System;
5using BenchmarkDotNet.Attributes;
6using osu.Framework.Localisation;
7
8namespace osu.Framework.Benchmarks
9{
10 [MemoryDiagnoser]
11 public class BenchmarkLocalisableString
12 {
13 private string string1;
14 private string string2;
15 private LocalisableString localisableString1;
16 private LocalisableString localisableString2;
17 private LocalisableString romanisableString1;
18 private LocalisableString romanisableString2;
19 private LocalisableString translatableString1;
20 private LocalisableString translatableString2;
21 private LocalisableString formattableString1;
22 private LocalisableString formattableString2;
23
24 [GlobalSetup]
25 public void GlobalSetup()
26 {
27 string1 = "a";
28 string2 = "b";
29 localisableString1 = "a";
30 localisableString2 = "b";
31 romanisableString1 = new RomanisableString("a", "b");
32 romanisableString2 = new RomanisableString("c", "d");
33 translatableString1 = new TranslatableString("e", "f");
34 translatableString2 = new TranslatableString("g", "h");
35 formattableString1 = new LocalisableFormattableString(1.23, "N0");
36 formattableString2 = new LocalisableFormattableString(4.56, "N1");
37 }
38
39 [Benchmark]
40 public bool BenchmarkStringEquals() => string1.Equals(string2, StringComparison.Ordinal);
41
42 [Benchmark]
43 public bool BenchmarkLocalisableStringEquals() => localisableString1.Equals(localisableString2);
44
45 [Benchmark]
46 public bool BenchmarkRomanisableEquals() => romanisableString1.Equals(romanisableString2);
47
48 [Benchmark]
49 public bool BenchmarkTranslatableEquals() => translatableString1.Equals(translatableString2);
50
51 [Benchmark]
52 public bool BenchmarkFormattableEquals() => formattableString1.Equals(formattableString2);
53
54 [Benchmark]
55 public int BenchmarkStringGetHashCode() => string1.GetHashCode();
56
57 [Benchmark]
58 public int BenchmarkLocalisableStringGetHashCode() => localisableString1.GetHashCode();
59
60 [Benchmark]
61 public int BenchmarkRomanisableGetHashCode() => romanisableString1.GetHashCode();
62
63 [Benchmark]
64 public int BenchmarkTranslatableGetHashCode() => translatableString1.GetHashCode();
65
66 [Benchmark]
67 public int BenchmarkFormattableGetHashCode() => formattableString1.GetHashCode();
68 }
69}