Skip to content

Commit 2c0f4ad

Browse files
committed
Add samples and documentations
1 parent e09c460 commit 2c0f4ad

34 files changed

+1497
-8
lines changed

Documentation~/comparable test.png

31.1 KB
Loading

Documentation~/parameterized test.png

35.4 KB
Loading

Documentation~/samples.png

52.8 KB
Loading

Documentation~/tool screenshot.png

131 KB
Loading

Documentation~/viewer window.png

114 KB
Loading

README.md

+102-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@ This tool extends Unity's performance testing API to run various types of tests
33

44
When you create multiple tests and want to compare the results, this tool will help you to compare the results of the tests in a chart.
55

6+
![img](Documentation~/tool screenshot.png)
7+
8+
| Compare tests | Parameterized tests |
9+
|--------------------------------------------|-----------------------------------------------|
10+
| ![img](Documentation~/comparable test.png) | ![img](Documentation~/parameterized test.png) |
11+
12+
13+
14+
15+
616
## Prerequisites
717
API Compatibility Level : .Net Framework
818
Unity Version : 2022.3.14f1
@@ -17,19 +27,103 @@ or
1727
`git clone https://github.com/penspanic/UnityPerformanceTestReportViewer.git`
1828
`Unity>Package Manager>Add package from disk...>path_to_UnityPerformanceTestReportViewer`
1929

20-
## Quick Start
21-
### Simple test
30+
## Usage
31+
### Write tests
32+
Sample test codes are available in Package Samples.
33+
![img](Documentation~/samples.png)
34+
<br>
35+
36+
#### Simple test
2237
```csharp
38+
[SampleDefinitionContainer]
39+
public static class SimpleTestDefinitions
40+
{
41+
public const string Category = "SimpleTest";
42+
public static readonly ISampleDefinition Value1 = new DefaultSampleDefinition("Value1", Category, SampleUnit.Byte);
43+
public static readonly ISampleDefinition Value2 = new DefaultSampleDefinition("Value2", Category, SampleUnit.Byte);
44+
public static readonly ISampleDefinition Value3 = new DefaultSampleDefinition("Value3", Category, SampleUnit.Byte);
45+
}
46+
47+
public class SimpleTest
48+
{
49+
[Test, Performance]
50+
public void Test()
51+
{
52+
using var sampleGroups = new SampleGroups();
53+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
54+
Console.WriteLine("Do something");
55+
56+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value2))
57+
Console.WriteLine("Do something");
58+
59+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value3))
60+
Console.WriteLine("Do something");
61+
}
62+
}
2363
```
2464

25-
### Grouped test
65+
#### Grouped test
66+
You can visualize the results of multiple tests in a single chart.
67+
68+
##### Parameterized test
69+
```csharp
70+
public class ParameterizedTest
71+
{
72+
[Test, Performance]
73+
public void Test([Values(1, 2, 3, 4, 5)]int parameter)
74+
{
75+
using var sampleGroups = new SampleGroups();
76+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
77+
Console.WriteLine("Do something");
78+
}
79+
}
80+
```
81+
82+
##### Comparable test
83+
```csharp
84+
[ComparableTest]
85+
public class GroupedTest
86+
{
87+
[Test, Performance]
88+
public void Test1()
89+
{
90+
using var sampleGroups = new SampleGroups();
91+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
92+
Console.WriteLine("Do something");
93+
}
94+
95+
[Test, Performance]
96+
public void Test2()
97+
{
98+
using var sampleGroups = new SampleGroups();
99+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
100+
Console.WriteLine("Do something");
101+
}
102+
103+
[Test, Performance]
104+
public void Test3()
105+
{
106+
using var sampleGroups = new SampleGroups();
107+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
108+
Console.WriteLine("Do something");
109+
}
110+
}
111+
```
112+
113+
### Run tests
114+
Written tests will be displayed in the Unity Test Runner window. Run the tests.
115+
116+
### View results
117+
Open PerformanceTestReportViewer window.
118+
(Window/Analysis/Performance Test Report Viewer, Ctrl+Shift+Alt+V)
119+
120+
Some viewing options are available in the window.
121+
![img](Documentation~/viewer window.png)
122+
26123

27124
## Extensions
28125
### Unity.Entities Extension
29-
`Unity>Package Manager>Performance Test ReportViewer>Samples>Unity.Entities Extensions`
30-
Provides an extension for testing Unity.Entities. In particular, it provides performance testing extensions for ECS World.
31-
32-
<!-- # (테스트로 World를 생성하고 실행할 때 World의 System별 소요 시간을 측정할 수 있습니다.) -->
126+
Provides an extension for testing Unity.Entities. In particular, it provides performance testing extensions for ECS World.
127+
`Package Manager>Performance Test ReportViewer>Samples>Unity.Entities Extensions`
33128

34129

35-
## TODO
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
using System;
2+
using NUnit.Framework;
3+
using PerformanceTestReportViewer.Definition;
4+
using PerformanceTestReportViewer.Editor;
5+
using Unity.PerformanceTesting;
6+
7+
namespace PerformanceTestReportViewer.Samples_.EditModeTests
8+
{
9+
[SampleDefinitionContainer]
10+
public static class GraphTestDefinitions
11+
{
12+
public const string Category = "GraphTest";
13+
public static readonly ISampleDefinition Value1 = new DefaultSampleDefinition("Value1", Category, SampleUnit.Byte);
14+
public static readonly ISampleDefinition Value2 = new DefaultSampleDefinition("Value2", Category, SampleUnit.Byte);
15+
public static readonly ISampleDefinition Value3 = new DefaultSampleDefinition("Value3", Category, SampleUnit.Byte);
16+
public static readonly ISampleDefinition Value4 = new DefaultSampleDefinition("Value4", Category, SampleUnit.Byte);
17+
public static readonly ISampleDefinition Value5 = new DefaultSampleDefinition("Value5", Category, SampleUnit.Byte);
18+
public static readonly ISampleDefinition Value6 = new DefaultSampleDefinition("Value6", Category, SampleUnit.Byte);
19+
public static readonly ISampleDefinition Value7 = new DefaultSampleDefinition("Value7", Category, SampleUnit.Byte);
20+
public static readonly ISampleDefinition Value8 = new DefaultSampleDefinition("Value8", Category, SampleUnit.Byte);
21+
public static readonly ISampleDefinition Value9 = new DefaultSampleDefinition("Value9", Category, SampleUnit.Byte);
22+
public static readonly ISampleDefinition Value10 = new DefaultSampleDefinition("Value10", Category, SampleUnit.Byte);
23+
public static readonly ISampleDefinition Value11 = new DefaultSampleDefinition("Value11", Category, SampleUnit.Byte);
24+
public static readonly ISampleDefinition Value12 = new DefaultSampleDefinition("Value12", Category, SampleUnit.Byte);
25+
}
26+
27+
internal static class GraphTestUtil
28+
{
29+
public static void AddAllSamples(SampleGroups sampleGroups, Random random)
30+
{
31+
sampleGroups.AddSample(GraphTestDefinitions.Value1, random.Next(0, 100));
32+
sampleGroups.AddSample(GraphTestDefinitions.Value2, random.Next(0, 100));
33+
sampleGroups.AddSample(GraphTestDefinitions.Value3, random.Next(0, 100));
34+
sampleGroups.AddSample(GraphTestDefinitions.Value4, random.Next(0, 100));
35+
sampleGroups.AddSample(GraphTestDefinitions.Value5, random.Next(0, 100));
36+
sampleGroups.AddSample(GraphTestDefinitions.Value6, random.Next(0, 100));
37+
sampleGroups.AddSample(GraphTestDefinitions.Value7, random.Next(0, 100));
38+
sampleGroups.AddSample(GraphTestDefinitions.Value8, random.Next(0, 100));
39+
sampleGroups.AddSample(GraphTestDefinitions.Value9, random.Next(0, 100));
40+
sampleGroups.AddSample(GraphTestDefinitions.Value10, random.Next(0, 100));
41+
sampleGroups.AddSample(GraphTestDefinitions.Value11, random.Next(0, 100));
42+
sampleGroups.AddSample(GraphTestDefinitions.Value12, random.Next(0, 100));
43+
}
44+
}
45+
46+
public class GraphTest
47+
{
48+
[Test, Performance]
49+
public void ManySamples()
50+
{
51+
var random = new Random(Seed: 1);
52+
using var sampleGroups = new SampleGroups();
53+
GraphTestUtil.AddAllSamples(sampleGroups, random);
54+
}
55+
56+
[Test, Performance]
57+
public void ManyTargets()
58+
{
59+
var random = new Random(Seed: 1);
60+
using var sampleGroups = new SampleGroups();
61+
foreach (string sampleTarget in new[] { "Target1", "Target2", "Target3", "Target4", "Target5", "Target6" })
62+
{
63+
sampleGroups.AddSample(GraphTestDefinitions.Value1, random.Next(10), sampleTarget);
64+
sampleGroups.AddSample(GraphTestDefinitions.Value2, random.Next(10), sampleTarget);
65+
sampleGroups.AddSample(GraphTestDefinitions.Value3, random.Next(10), sampleTarget);
66+
sampleGroups.AddSample(GraphTestDefinitions.Value4, random.Next(10), sampleTarget);
67+
}
68+
}
69+
70+
[Test, Performance]
71+
public void ManyTargetsWithParameter([Values(10, 20, 30, 40)] int param)
72+
{
73+
var random = new Random(Seed: param);
74+
using var sampleGroups = new SampleGroups();
75+
foreach (string sampleTarget in new[] { "Target1", "Target2", "Target3", "Target4", "Target5", "Target6" })
76+
{
77+
sampleGroups.AddSample(GraphTestDefinitions.Value1, random.Next(param), sampleTarget);
78+
sampleGroups.AddSample(GraphTestDefinitions.Value2, random.Next(param), sampleTarget);
79+
sampleGroups.AddSample(GraphTestDefinitions.Value3, random.Next(param), sampleTarget);
80+
sampleGroups.AddSample(GraphTestDefinitions.Value4, random.Next(param), sampleTarget);
81+
}
82+
}
83+
}
84+
85+
[ComparableTest]
86+
public class GraphComparableTest
87+
{
88+
[Test, Performance]
89+
public void CompareTest1()
90+
{
91+
var random = new Random(Seed: 1);
92+
using var sampleGroups = new SampleGroups();
93+
GraphTestUtil.AddAllSamples(sampleGroups, random);
94+
}
95+
96+
[Test, Performance]
97+
public void CompareTest2()
98+
{
99+
var random = new Random(Seed: 2);
100+
using var sampleGroups = new SampleGroups();
101+
GraphTestUtil.AddAllSamples(sampleGroups, random);
102+
}
103+
}
104+
}

Samples~/Examples/EditModeTests/GraphTest.cs.meta

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using NUnit.Framework;
3+
using PerformanceTestReportViewer.Definition;
4+
using PerformanceTestReportViewer.Editor;
5+
using PerformanceTestReportViewer.Samples_.EditModeTests;
6+
using Unity.PerformanceTesting;
7+
8+
namespace PerformanceTestReportViewer.Samples_.Examples.EditModeTests
9+
{
10+
[ComparableTest]
11+
public class GroupedTest
12+
{
13+
[Test, Performance]
14+
public void Test1()
15+
{
16+
using var sampleGroups = new SampleGroups();
17+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
18+
Console.WriteLine("Do something");
19+
}
20+
21+
[Test, Performance]
22+
public void Test2()
23+
{
24+
using var sampleGroups = new SampleGroups();
25+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
26+
Console.WriteLine("Do something");
27+
}
28+
29+
[Test, Performance]
30+
public void Test3()
31+
{
32+
using var sampleGroups = new SampleGroups();
33+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
34+
Console.WriteLine("Do something");
35+
}
36+
}
37+
38+
public class ParameterizedTest
39+
{
40+
[Test, Performance]
41+
public void Test([Values(1, 2, 3, 4, 5)]int parameter)
42+
{
43+
using var sampleGroups = new SampleGroups();
44+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
45+
Console.WriteLine("Do something");
46+
}
47+
}
48+
}

Samples~/Examples/EditModeTests/GroupedTest.cs.meta

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "PerformanceTestReportViewer.Samples.EditModeTests",
3+
"rootNamespace": "",
4+
"references": [
5+
"UnityEngine.TestRunner",
6+
"UnityEditor.TestRunner",
7+
"Unity.PerformanceTesting",
8+
"Unity.PerformanceTesting.Editor",
9+
"PerformanceTestReportViewer",
10+
"PerformanceTestReportViewer.Editor"
11+
],
12+
"includePlatforms": [
13+
"Editor"
14+
],
15+
"excludePlatforms": [],
16+
"allowUnsafeCode": false,
17+
"overrideReferences": true,
18+
"precompiledReferences": [
19+
"nunit.framework.dll"
20+
],
21+
"autoReferenced": false,
22+
"defineConstraints": [
23+
"UNITY_INCLUDE_TESTS"
24+
],
25+
"versionDefines": [],
26+
"noEngineReferences": false
27+
}

Samples~/Examples/EditModeTests/PerformanceTestReportViewer.Samples.EditModeTests.asmdef.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System;
2+
using NUnit.Framework;
3+
using PerformanceTestReportViewer.Definition;
4+
using PerformanceTestReportViewer.Editor;
5+
using Unity.PerformanceTesting;
6+
7+
namespace PerformanceTestReportViewer.Samples_.EditModeTests
8+
{
9+
[SampleDefinitionContainer]
10+
public static class SimpleTestDefinitions
11+
{
12+
public const string Category = "SimpleTest";
13+
public static readonly ISampleDefinition Value1 = new DefaultSampleDefinition("Value1", Category, SampleUnit.Byte);
14+
public static readonly ISampleDefinition Value2 = new DefaultSampleDefinition("Value2", Category, SampleUnit.Byte);
15+
public static readonly ISampleDefinition Value3 = new DefaultSampleDefinition("Value3", Category, SampleUnit.Byte);
16+
}
17+
18+
public class SimpleTest
19+
{
20+
[Test, Performance]
21+
public void Test()
22+
{
23+
using var sampleGroups = new SampleGroups();
24+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value1))
25+
Console.WriteLine("Do something");
26+
27+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value2))
28+
Console.WriteLine("Do something");
29+
30+
using (sampleGroups.CreateScope(SimpleTestDefinitions.Value3))
31+
Console.WriteLine("Do something");
32+
}
33+
}
34+
}

Samples~/Examples/EditModeTests/SimpleTest.cs.meta

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)