@@ -59,8 +59,12 @@ private T CloneViaFormatter<T>(T obj)
59
59
}
60
60
61
61
[ Test , Ignore ( "Manual" ) ]
62
- public void Test_Construct_Variants ( )
62
+ [ TestCase ( false ) ]
63
+ [ TestCase ( true ) ]
64
+ public void Test_Construct_Variants ( bool isSafe )
63
65
{
66
+ // we cache cloners for type, so, this only variant with separate run
67
+ BaseTest . SwitchTo ( isSafe ) ;
64
68
var c1 = new C1 { V1 = 1 } ;
65
69
// warm up
66
70
for ( var i = 0 ; i < 1000 ; i ++ ) ManualDeepClone ( c1 ) ;
@@ -137,6 +141,9 @@ public void Test_Shallow_Variants()
137
141
// warm up
138
142
for ( var i = 0 ; i < 1000 ; i ++ ) ManualShallowClone ( c1 ) ;
139
143
for ( var i = 0 ; i < 1000 ; i ++ ) c1 . Clone ( ) ;
144
+ BaseTest . SwitchTo ( false ) ;
145
+ for ( var i = 0 ; i < 1000 ; i ++ ) c1 . ShallowClone ( ) ;
146
+ BaseTest . SwitchTo ( true ) ;
140
147
for ( var i = 0 ; i < 1000 ; i ++ ) c1 . ShallowClone ( ) ;
141
148
for ( var i = 0 ; i < 1000 ; i ++ ) c1 . GetClone ( ) ;
142
149
@@ -150,10 +157,17 @@ public void Test_Shallow_Variants()
150
157
151
158
for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . Clone ( ) ;
152
159
Console . WriteLine ( "Auto Internal: " + sw . ElapsedMilliseconds ) ;
153
- sw . Restart ( ) ;
160
+ sw . Reset ( ) ;
161
+ BaseTest . SwitchTo ( false ) ;
162
+ sw . Start ( ) ;
163
+ for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . ShallowClone ( ) ;
164
+ Console . WriteLine ( "Shallow Unsafe: " + sw . ElapsedMilliseconds ) ;
165
+ sw . Reset ( ) ;
154
166
167
+ BaseTest . SwitchTo ( true ) ;
168
+ sw . Start ( ) ;
155
169
for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . ShallowClone ( ) ;
156
- Console . WriteLine ( "Shallow: " + sw . ElapsedMilliseconds ) ;
170
+ Console . WriteLine ( "Shallow Safe : " + sw . ElapsedMilliseconds ) ;
157
171
sw . Restart ( ) ;
158
172
159
173
for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . GetClone ( CloningFlags . Shallow ) ;
0 commit comments