Advertisement
Guest User

Untitled

a guest
Sep 15th, 2011
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.71 KB | None | 0 0
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4.  
  5. namespace ConsoleApplication37 {
  6. public interface IArgumentNullException {
  7. string Message { get; }
  8. }
  9.  
  10. public interface IArgumentOutOfRangeException {
  11. string Message { get; }
  12. }
  13.  
  14. public interface IApplicationException {
  15. string Message { get; }
  16. }
  17.  
  18. public interface IIOException {
  19. string Message { get; }
  20. }
  21.  
  22. public class ArgumentNullException2 : ArgumentNullException, IArgumentNullException {
  23. }
  24.  
  25. public class ArgumentOutOfRangeException2 : ArgumentOutOfRangeException, IArgumentOutOfRangeException {
  26. }
  27.  
  28. public class ApplicationException2 : ApplicationException, IApplicationException {
  29. }
  30.  
  31. public class IOException2 : IOException, IIOException {
  32. }
  33.  
  34. class Program {
  35. static void Main(string[] args) {
  36. WithCatch(10000);
  37. Console.WriteLine();
  38. WithAs(10000);
  39. Console.WriteLine();
  40. WithCatch(10000);
  41. Console.WriteLine();
  42. WithAs(10000);
  43. Console.WriteLine();
  44.  
  45. Console.WriteLine("Press a key to exit");
  46. Console.ReadKey();
  47. }
  48.  
  49.  
  50. public static void MadThrower(Random rnd) {
  51. int num = rnd.Next(5);
  52.  
  53. switch (num) {
  54. case 0:
  55. throw new ArgumentNullException2();
  56. case 1:
  57. throw new ArgumentOutOfRangeException2();
  58. case 2:
  59. throw new ApplicationException2();
  60. case 3:
  61. throw new IOException2();
  62. case 4:
  63. throw new Exception();
  64. }
  65. }
  66.  
  67. static void WithCatch(int times) {
  68. int[] nums = new int[5];
  69. string lastMessage = null;
  70. int repeats = 0;
  71. var rnd = new Random(0);
  72.  
  73. Stopwatch sw = Stopwatch.StartNew();
  74.  
  75. for (int i = 0; i < times; i++) {
  76. try {
  77. MadThrower(rnd);
  78. } catch (ArgumentNullException2 ex) {
  79. if (ex.Message == lastMessage) {
  80. repeats++;
  81. }
  82. lastMessage = ex.Message;
  83. nums[0]++;
  84. } catch (ArgumentOutOfRangeException2 ex) {
  85. if (ex.Message == lastMessage) {
  86. repeats++;
  87. }
  88. lastMessage = ex.Message;
  89. nums[1]++;
  90. } catch (ApplicationException2 ex) {
  91. if (ex.Message == lastMessage) {
  92. repeats++;
  93. }
  94. lastMessage = ex.Message;
  95. nums[2]++;
  96. } catch (IOException2 ex) {
  97. if (ex.Message == lastMessage) {
  98. repeats++;
  99. }
  100. lastMessage = ex.Message;
  101. nums[3]++;
  102. } catch (Exception ex) {
  103. if (ex.Message == lastMessage) {
  104. repeats++;
  105. }
  106. lastMessage = ex.Message;
  107. nums[4]++;
  108. }
  109. }
  110.  
  111. sw.Stop();
  112.  
  113. for (int i = 0; i < nums.Length; i++) {
  114. Console.Write("{0} ", nums[i]);
  115. }
  116.  
  117. Console.Write(repeats);
  118.  
  119. Console.WriteLine();
  120. Console.WriteLine("Catch - Times {0} - ms {1}", times, sw.ElapsedMilliseconds);
  121. }
  122.  
  123. static void WithAs(int times) {
  124. int[] nums = new int[5];
  125. string lastMessage = null;
  126. int repeats = 0;
  127. var rnd = new Random(0);
  128.  
  129. Stopwatch sw = Stopwatch.StartNew();
  130.  
  131. for (int i = 0; i < times; i++) {
  132. try {
  133. MadThrower(rnd);
  134. } catch (Exception ex) {
  135. while (true) {
  136. {
  137. var ex2 = ex as IArgumentNullException;
  138. if (ex2 != null) {
  139. if (ex2.Message == lastMessage) {
  140. repeats++;
  141. }
  142.  
  143. lastMessage = ex2.Message;
  144.  
  145. nums[0]++;
  146.  
  147. break;
  148. }
  149. }
  150.  
  151. {
  152. var ex2 = ex as IArgumentOutOfRangeException;
  153. if (ex2 != null) {
  154. if (ex2.Message == lastMessage) {
  155. repeats++;
  156. }
  157.  
  158. lastMessage = ex2.Message;
  159.  
  160. nums[1]++;
  161.  
  162. break;
  163. }
  164. }
  165.  
  166. {
  167. var ex2 = ex as IApplicationException;
  168. if (ex2 != null) {
  169. if (ex2.Message == lastMessage) {
  170. repeats++;
  171. }
  172.  
  173. lastMessage = ex2.Message;
  174.  
  175. nums[2]++;
  176.  
  177. break;
  178. }
  179. }
  180.  
  181. {
  182. var ex2 = ex as IIOException;
  183. if (ex2 != null) {
  184. if (ex2.Message == lastMessage) {
  185. repeats++;
  186. }
  187.  
  188. lastMessage = ex2.Message;
  189.  
  190. nums[3]++;
  191.  
  192. break;
  193. }
  194. }
  195.  
  196. {
  197. if (ex.Message == lastMessage) {
  198. repeats++;
  199. }
  200.  
  201. lastMessage = ex.Message;
  202.  
  203. nums[4]++;
  204.  
  205. break;
  206. }
  207. }
  208. }
  209. }
  210.  
  211. sw.Stop();
  212.  
  213. for (int i = 0; i < nums.Length; i++) {
  214. Console.Write("{0} ", nums[i]);
  215. }
  216.  
  217. Console.Write(repeats);
  218.  
  219. Console.WriteLine();
  220. Console.WriteLine("As - Times {0} - ms {1}", times, sw.ElapsedMilliseconds);
  221. }
  222. }
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement