88
99public static class TaskPerfCSharp
1010{
11- public const int BufferSize = 128 ;
11+ // public const int BufferSize = 128;
1212 //public const int ManyIterations = 10000;
1313
14- public static async Task ManyWriteFileAsync ( int ManyIterations )
14+ public static async Task ManyWriteFileAsync ( int ManyIterations , int BufferSize )
1515 {
1616 const string path = "tmp" ;
1717 var junk = new byte [ BufferSize ] ;
@@ -25,6 +25,22 @@ public static async Task ManyWriteFileAsync(int ManyIterations)
2525 File . Delete ( path ) ;
2626 }
2727
28+
29+ public static async ValueTask ManyWriteFileAsync_ValueTask ( int ManyIterations , int BufferSize )
30+ {
31+ const string path = "tmp" ;
32+ var junk = new byte [ BufferSize ] ;
33+ using ( var file = File . Create ( path ) )
34+ {
35+ for ( var i = 1 ; i <= ManyIterations ; i ++ )
36+ {
37+ await file . WriteAsync ( junk , 0 , junk . Length ) ;
38+ }
39+ }
40+ File . Delete ( path ) ;
41+ }
42+
43+
2844 public static System . Runtime . CompilerServices . YieldAwaitable AsyncTask ( )
2945 {
3046 return Task . Yield ( ) ;
@@ -35,7 +51,42 @@ public static Task<int> SyncTask()
3551 return Task . FromResult ( 100 ) ;
3652 }
3753
38- public static async Task < int > TenBindsSync_CSharp ( )
54+ public static ValueTask < int > SyncValueTask ( )
55+ {
56+ return new ValueTask < int > ( 100 ) ;
57+ }
58+
59+ public static async Task < int > CSharp_TenBindsSync_TaskBuilder_BindTask ( )
60+ {
61+ var x1 = await SyncTask ( ) ;
62+ var x2 = await SyncTask ( ) ;
63+ var x3 = await SyncTask ( ) ;
64+ var x4 = await SyncTask ( ) ;
65+ var x5 = await SyncTask ( ) ;
66+ var x6 = await SyncTask ( ) ;
67+ var x7 = await SyncTask ( ) ;
68+ var x8 = await SyncTask ( ) ;
69+ var x9 = await SyncTask ( ) ;
70+ var x10 = await SyncTask ( ) ;
71+ return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 ;
72+ }
73+
74+ public static async Task < int > CSharp_TenBindsSync_TaskBuilder_BindValueTask ( )
75+ {
76+ var x1 = await SyncValueTask ( ) ;
77+ var x2 = await SyncValueTask ( ) ;
78+ var x3 = await SyncValueTask ( ) ;
79+ var x4 = await SyncValueTask ( ) ;
80+ var x5 = await SyncValueTask ( ) ;
81+ var x6 = await SyncValueTask ( ) ;
82+ var x7 = await SyncValueTask ( ) ;
83+ var x8 = await SyncValueTask ( ) ;
84+ var x9 = await SyncValueTask ( ) ;
85+ var x10 = await SyncValueTask ( ) ;
86+ return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 ;
87+ }
88+
89+ public static async ValueTask < int > CSharp_TenBindsSync_ValueTaskBuilder_BindTask ( )
3990 {
4091 var x1 = await SyncTask ( ) ;
4192 var x2 = await SyncTask ( ) ;
@@ -50,7 +101,39 @@ public static async Task<int> TenBindsSync_CSharp()
50101 return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 ;
51102 }
52103
53- public static async Task < int > TenBindsAsync_CSharp ( )
104+
105+ public static async ValueTask < int > CSharp_TenBindsSync_ValueTaskBuilder_BindValueTask ( )
106+ {
107+ var x1 = await SyncValueTask ( ) ;
108+ var x2 = await SyncValueTask ( ) ;
109+ var x3 = await SyncValueTask ( ) ;
110+ var x4 = await SyncValueTask ( ) ;
111+ var x5 = await SyncValueTask ( ) ;
112+ var x6 = await SyncValueTask ( ) ;
113+ var x7 = await SyncValueTask ( ) ;
114+ var x8 = await SyncValueTask ( ) ;
115+ var x9 = await SyncValueTask ( ) ;
116+ var x10 = await SyncValueTask ( ) ;
117+ return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 ;
118+ }
119+
120+ public static async Task < int > CSharp_TenBindsAsync_TaskBuilder ( )
121+ {
122+ await AsyncTask ( ) ;
123+ await AsyncTask ( ) ;
124+ await AsyncTask ( ) ;
125+ await AsyncTask ( ) ;
126+ await AsyncTask ( ) ;
127+ await AsyncTask ( ) ;
128+ await AsyncTask ( ) ;
129+ await AsyncTask ( ) ;
130+ await AsyncTask ( ) ;
131+ await AsyncTask ( ) ;
132+ return 100 ;
133+ }
134+
135+
136+ public static async ValueTask < int > CSharp_TenBindsAsync_ValueTaskBuilder ( )
54137 {
55138 await AsyncTask ( ) ;
56139 await AsyncTask ( ) ;
0 commit comments