@@ -59,8 +59,12 @@ private T CloneViaFormatter<T>(T obj)
5959 }
6060
6161 [ Test , Ignore ( "Manual" ) ]
62- public void Test_Construct_Variants ( )
62+ [ TestCase ( false ) ]
63+ [ TestCase ( true ) ]
64+ public void Test_Construct_Variants ( bool isSafe )
6365 {
66+ // we cache cloners for type, so, this only variant with separate run
67+ BaseTest . SwitchTo ( isSafe ) ;
6468 var c1 = new C1 { V1 = 1 } ;
6569 // warm up
6670 for ( var i = 0 ; i < 1000 ; i ++ ) ManualDeepClone ( c1 ) ;
@@ -137,6 +141,9 @@ public void Test_Shallow_Variants()
137141 // warm up
138142 for ( var i = 0 ; i < 1000 ; i ++ ) ManualShallowClone ( c1 ) ;
139143 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 ) ;
140147 for ( var i = 0 ; i < 1000 ; i ++ ) c1 . ShallowClone ( ) ;
141148 for ( var i = 0 ; i < 1000 ; i ++ ) c1 . GetClone ( ) ;
142149
@@ -150,10 +157,17 @@ public void Test_Shallow_Variants()
150157
151158 for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . Clone ( ) ;
152159 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 ( ) ;
154166
167+ BaseTest . SwitchTo ( true ) ;
168+ sw . Start ( ) ;
155169 for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . ShallowClone ( ) ;
156- Console . WriteLine ( "Shallow: " + sw . ElapsedMilliseconds ) ;
170+ Console . WriteLine ( "Shallow Safe : " + sw . ElapsedMilliseconds ) ;
157171 sw . Restart ( ) ;
158172
159173 for ( var i = 0 ; i < 1000000 ; i ++ ) c1 . GetClone ( CloningFlags . Shallow ) ;
0 commit comments