fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace StringTest
  9. {
  10. class Program
  11. {
  12. static int _hitCounter = 0;
  13.  
  14. static void Main( string[] args )
  15. {
  16. var sw = new Stopwatch();
  17.  
  18. Console.WriteLine( "TestPattern1" );
  19. foreach( var i in Enumerable.Range( 1, 3 ) )
  20. {
  21. _hitCounter = 0;
  22. sw.Reset();
  23. sw.Start();
  24. foreach( var j in Enumerable.Range( 0, 10000000 ) )
  25. stringCaseTestPattern1();
  26. sw.Stop();
  27. Console.WriteLine( "test{0} elapsed:{1}msec hitCounter:{2}", i, sw.ElapsedMilliseconds, _hitCounter );
  28. }
  29. Console.WriteLine( "" );
  30.  
  31. Console.WriteLine( "TestPattern2" );
  32. foreach( var i in Enumerable.Range( 1, 3 ) )
  33. {
  34. _hitCounter = 0;
  35. sw.Reset();
  36. sw.Start();
  37. foreach( var j in Enumerable.Range( 0, 10000000 ) )
  38. stringCaseTestPattern1();
  39. sw.Stop();
  40. Console.WriteLine( "test{0} elapsed:{1}msec hitCounter:{2}", i, sw.ElapsedMilliseconds, _hitCounter );
  41. }
  42. Console.WriteLine( "" );
  43.  
  44. Console.WriteLine( "TestPattern3" );
  45. foreach( var i in Enumerable.Range( 1, 3 ) )
  46. {
  47. _hitCounter = 0;
  48. sw.Reset();
  49. sw.Start();
  50. foreach( var j in Enumerable.Range( 0, 10000000 ) )
  51. stringCaseTestPattern3();
  52. sw.Stop();
  53. Console.WriteLine( "test{0} elapsed:{1}msec hitCounter:{2}", i, sw.ElapsedMilliseconds, _hitCounter );
  54. }
  55. Console.WriteLine( "" );
  56.  
  57. Console.WriteLine( "TestPattern4" );
  58. foreach( var i in Enumerable.Range( 1, 3 ) )
  59. {
  60. _hitCounter = 0;
  61. sw.Reset();
  62. sw.Start();
  63. foreach( var j in Enumerable.Range( 0, 10000000 ) )
  64. stringCaseTest["stringcasetest050"]();
  65. sw.Stop();
  66. Console.WriteLine( "test{0} elapsed:{1}msec hitCounter:{2}", i, sw.ElapsedMilliseconds, _hitCounter );
  67. }
  68. Console.WriteLine( "" );
  69. }
  70.  
  71. private static void stringCaseTestPattern1()
  72. {
  73. var srchStr = "casestringtest001";
  74.  
  75. switch( srchStr )
  76. {
  77. case "casestringtest001": _hitCounter++; break;
  78. case "casestringtest002": break;
  79. case "casestringtest003": break;
  80. case "casestringtest004": break;
  81. case "casestringtest005": break;
  82. case "casestringtest006": break;
  83. case "casestringtest007": break;
  84. case "casestringtest008": break;
  85. case "casestringtest009": break;
  86. case "casestringtest010": break;
  87. case "casestringtest011": break;
  88. case "casestringtest012": break;
  89. case "casestringtest013": break;
  90. case "casestringtest014": break;
  91. case "casestringtest015": break;
  92. case "casestringtest016": break;
  93. case "casestringtest017": break;
  94. case "casestringtest018": break;
  95. case "casestringtest019": break;
  96. case "casestringtest020": break;
  97. case "casestringtest021": break;
  98. case "casestringtest022": break;
  99. case "casestringtest023": break;
  100. case "casestringtest024": break;
  101. case "casestringtest025": break;
  102. case "casestringtest026": break;
  103. case "casestringtest027": break;
  104. case "casestringtest028": break;
  105. case "casestringtest029": break;
  106. case "casestringtest030": break;
  107. case "casestringtest031": break;
  108. case "casestringtest032": break;
  109. case "casestringtest033": break;
  110. case "casestringtest034": break;
  111. case "casestringtest035": break;
  112. case "casestringtest036": break;
  113. case "casestringtest037": break;
  114. case "casestringtest038": break;
  115. case "casestringtest039": break;
  116. case "casestringtest040": break;
  117. case "casestringtest041": break;
  118. case "casestringtest042": break;
  119. case "casestringtest043": break;
  120. case "casestringtest044": break;
  121. case "casestringtest045": break;
  122. case "casestringtest046": break;
  123. case "casestringtest047": break;
  124. case "casestringtest048": break;
  125. case "casestringtest049": break;
  126. case "casestringtest050": break;
  127. case "stringcasetest001": break;
  128. case "stringcasetest002": break;
  129. case "stringcasetest003": break;
  130. case "stringcasetest004": break;
  131. case "stringcasetest005": break;
  132. case "stringcasetest006": break;
  133. case "stringcasetest007": break;
  134. case "stringcasetest008": break;
  135. case "stringcasetest009": break;
  136. case "stringcasetest010": break;
  137. case "stringcasetest011": break;
  138. case "stringcasetest012": break;
  139. case "stringcasetest013": break;
  140. case "stringcasetest014": break;
  141. case "stringcasetest015": break;
  142. case "stringcasetest016": break;
  143. case "stringcasetest017": break;
  144. case "stringcasetest018": break;
  145. case "stringcasetest019": break;
  146. case "stringcasetest020": break;
  147. case "stringcasetest021": break;
  148. case "stringcasetest022": break;
  149. case "stringcasetest023": break;
  150. case "stringcasetest024": break;
  151. case "stringcasetest025": break;
  152. case "stringcasetest026": break;
  153. case "stringcasetest027": break;
  154. case "stringcasetest028": break;
  155. case "stringcasetest029": break;
  156. case "stringcasetest030": break;
  157. case "stringcasetest031": break;
  158. case "stringcasetest032": break;
  159. case "stringcasetest033": break;
  160. case "stringcasetest034": break;
  161. case "stringcasetest035": break;
  162. case "stringcasetest036": break;
  163. case "stringcasetest037": break;
  164. case "stringcasetest038": break;
  165. case "stringcasetest039": break;
  166. case "stringcasetest040": break;
  167. case "stringcasetest041": break;
  168. case "stringcasetest042": break;
  169. case "stringcasetest043": break;
  170. case "stringcasetest044": break;
  171. case "stringcasetest045": break;
  172. case "stringcasetest046": break;
  173. case "stringcasetest047": break;
  174. case "stringcasetest048": break;
  175. case "stringcasetest049": break;
  176. case "stringcasetest050": break;
  177. }
  178. }
  179.  
  180. private static void stringCaseTestPattern2()
  181. {
  182. var srchStr = "stringcasetest050";
  183.  
  184. switch( srchStr )
  185. {
  186. case "casestringtest001": break;
  187. case "casestringtest002": break;
  188. case "casestringtest003": break;
  189. case "casestringtest004": break;
  190. case "casestringtest005": break;
  191. case "casestringtest006": break;
  192. case "casestringtest007": break;
  193. case "casestringtest008": break;
  194. case "casestringtest009": break;
  195. case "casestringtest010": break;
  196. case "casestringtest011": break;
  197. case "casestringtest012": break;
  198. case "casestringtest013": break;
  199. case "casestringtest014": break;
  200. case "casestringtest015": break;
  201. case "casestringtest016": break;
  202. case "casestringtest017": break;
  203. case "casestringtest018": break;
  204. case "casestringtest019": break;
  205. case "casestringtest020": break;
  206. case "casestringtest021": break;
  207. case "casestringtest022": break;
  208. case "casestringtest023": break;
  209. case "casestringtest024": break;
  210. case "casestringtest025": break;
  211. case "casestringtest026": break;
  212. case "casestringtest027": break;
  213. case "casestringtest028": break;
  214. case "casestringtest029": break;
  215. case "casestringtest030": break;
  216. case "casestringtest031": break;
  217. case "casestringtest032": break;
  218. case "casestringtest033": break;
  219. case "casestringtest034": break;
  220. case "casestringtest035": break;
  221. case "casestringtest036": break;
  222. case "casestringtest037": break;
  223. case "casestringtest038": break;
  224. case "casestringtest039": break;
  225. case "casestringtest040": break;
  226. case "casestringtest041": break;
  227. case "casestringtest042": break;
  228. case "casestringtest043": break;
  229. case "casestringtest044": break;
  230. case "casestringtest045": break;
  231. case "casestringtest046": break;
  232. case "casestringtest047": break;
  233. case "casestringtest048": break;
  234. case "casestringtest049": break;
  235. case "casestringtest050": break;
  236. case "stringcasetest001": break;
  237. case "stringcasetest002": break;
  238. case "stringcasetest003": break;
  239. case "stringcasetest004": break;
  240. case "stringcasetest005": break;
  241. case "stringcasetest006": break;
  242. case "stringcasetest007": break;
  243. case "stringcasetest008": break;
  244. case "stringcasetest009": break;
  245. case "stringcasetest010": break;
  246. case "stringcasetest011": break;
  247. case "stringcasetest012": break;
  248. case "stringcasetest013": break;
  249. case "stringcasetest014": break;
  250. case "stringcasetest015": break;
  251. case "stringcasetest016": break;
  252. case "stringcasetest017": break;
  253. case "stringcasetest018": break;
  254. case "stringcasetest019": break;
  255. case "stringcasetest020": break;
  256. case "stringcasetest021": break;
  257. case "stringcasetest022": break;
  258. case "stringcasetest023": break;
  259. case "stringcasetest024": break;
  260. case "stringcasetest025": break;
  261. case "stringcasetest026": break;
  262. case "stringcasetest027": break;
  263. case "stringcasetest028": break;
  264. case "stringcasetest029": break;
  265. case "stringcasetest030": break;
  266. case "stringcasetest031": break;
  267. case "stringcasetest032": break;
  268. case "stringcasetest033": break;
  269. case "stringcasetest034": break;
  270. case "stringcasetest035": break;
  271. case "stringcasetest036": break;
  272. case "stringcasetest037": break;
  273. case "stringcasetest038": break;
  274. case "stringcasetest039": break;
  275. case "stringcasetest040": break;
  276. case "stringcasetest041": break;
  277. case "stringcasetest042": break;
  278. case "stringcasetest043": break;
  279. case "stringcasetest044": break;
  280. case "stringcasetest045": break;
  281. case "stringcasetest046": break;
  282. case "stringcasetest047": break;
  283. case "stringcasetest048": break;
  284. case "stringcasetest049": break;
  285. case "stringcasetest050": _hitCounter++; break;
  286. }
  287. }
  288.  
  289. private static void stringCaseTestPattern3()
  290. {
  291. var srchStr = "stringcasetest050";
  292. char firstChar = srchStr[0];
  293.  
  294. switch( firstChar )
  295. {
  296. case 'c':
  297. switch( srchStr )
  298. {
  299. case "casestringtest001": break;
  300. case "casestringtest002": break;
  301. case "casestringtest003": break;
  302. case "casestringtest004": break;
  303. case "casestringtest005": break;
  304. case "casestringtest006": break;
  305. case "casestringtest007": break;
  306. case "casestringtest008": break;
  307. case "casestringtest009": break;
  308. case "casestringtest010": break;
  309. case "casestringtest011": break;
  310. case "casestringtest012": break;
  311. case "casestringtest013": break;
  312. case "casestringtest014": break;
  313. case "casestringtest015": break;
  314. case "casestringtest016": break;
  315. case "casestringtest017": break;
  316. case "casestringtest018": break;
  317. case "casestringtest019": break;
  318. case "casestringtest020": break;
  319. case "casestringtest021": break;
  320. case "casestringtest022": break;
  321. case "casestringtest023": break;
  322. case "casestringtest024": break;
  323. case "casestringtest025": break;
  324. case "casestringtest026": break;
  325. case "casestringtest027": break;
  326. case "casestringtest028": break;
  327. case "casestringtest029": break;
  328. case "casestringtest030": break;
  329. case "casestringtest031": break;
  330. case "casestringtest032": break;
  331. case "casestringtest033": break;
  332. case "casestringtest034": break;
  333. case "casestringtest035": break;
  334. case "casestringtest036": break;
  335. case "casestringtest037": break;
  336. case "casestringtest038": break;
  337. case "casestringtest039": break;
  338. case "casestringtest040": break;
  339. case "casestringtest041": break;
  340. case "casestringtest042": break;
  341. case "casestringtest043": break;
  342. case "casestringtest044": break;
  343. case "casestringtest045": break;
  344. case "casestringtest046": break;
  345. case "casestringtest047": break;
  346. case "casestringtest048": break;
  347. case "casestringtest049": break;
  348. case "casestringtest050": break;
  349. }
  350. break;
  351.  
  352. case 's':
  353. switch( srchStr )
  354. {
  355. case "stringcasetest001": break;
  356. case "stringcasetest002": break;
  357. case "stringcasetest003": break;
  358. case "stringcasetest004": break;
  359. case "stringcasetest005": break;
  360. case "stringcasetest006": break;
  361. case "stringcasetest007": break;
  362. case "stringcasetest008": break;
  363. case "stringcasetest009": break;
  364. case "stringcasetest010": break;
  365. case "stringcasetest011": break;
  366. case "stringcasetest012": break;
  367. case "stringcasetest013": break;
  368. case "stringcasetest014": break;
  369. case "stringcasetest015": break;
  370. case "stringcasetest016": break;
  371. case "stringcasetest017": break;
  372. case "stringcasetest018": break;
  373. case "stringcasetest019": break;
  374. case "stringcasetest020": break;
  375. case "stringcasetest021": break;
  376. case "stringcasetest022": break;
  377. case "stringcasetest023": break;
  378. case "stringcasetest024": break;
  379. case "stringcasetest025": break;
  380. case "stringcasetest026": break;
  381. case "stringcasetest027": break;
  382. case "stringcasetest028": break;
  383. case "stringcasetest029": break;
  384. case "stringcasetest030": break;
  385. case "stringcasetest031": break;
  386. case "stringcasetest032": break;
  387. case "stringcasetest033": break;
  388. case "stringcasetest034": break;
  389. case "stringcasetest035": break;
  390. case "stringcasetest036": break;
  391. case "stringcasetest037": break;
  392. case "stringcasetest038": break;
  393. case "stringcasetest039": break;
  394. case "stringcasetest040": break;
  395. case "stringcasetest041": break;
  396. case "stringcasetest042": break;
  397. case "stringcasetest043": break;
  398. case "stringcasetest044": break;
  399. case "stringcasetest045": break;
  400. case "stringcasetest046": break;
  401. case "stringcasetest047": break;
  402. case "stringcasetest048": break;
  403. case "stringcasetest049": break;
  404. case "stringcasetest050": _hitCounter++; break;
  405. }
  406. break;
  407. }
  408. }
  409.  
  410. private static Dictionary<string, Action> stringCaseTest = new Dictionary<string, Action>
  411. {
  412. {"casestringtest001", new Action(()=> { ; }) },
  413. {"casestringtest002", new Action(()=> { ; }) },
  414. {"casestringtest003", new Action(()=> { ; }) },
  415. {"casestringtest004", new Action(()=> { ; }) },
  416. {"casestringtest005", new Action(()=> { ; }) },
  417. {"casestringtest006", new Action(()=> { ; }) },
  418. {"casestringtest007", new Action(()=> { ; }) },
  419. {"casestringtest008", new Action(()=> { ; }) },
  420. {"casestringtest009", new Action(()=> { ; }) },
  421. {"casestringtest010", new Action(()=> { ; }) },
  422. {"casestringtest011", new Action(()=> { ; }) },
  423. {"casestringtest012", new Action(()=> { ; }) },
  424. {"casestringtest013", new Action(()=> { ; }) },
  425. {"casestringtest014", new Action(()=> { ; }) },
  426. {"casestringtest015", new Action(()=> { ; }) },
  427. {"casestringtest016", new Action(()=> { ; }) },
  428. {"casestringtest017", new Action(()=> { ; }) },
  429. {"casestringtest018", new Action(()=> { ; }) },
  430. {"casestringtest019", new Action(()=> { ; }) },
  431. {"casestringtest020", new Action(()=> { ; }) },
  432. {"casestringtest021", new Action(()=> { ; }) },
  433. {"casestringtest022", new Action(()=> { ; }) },
  434. {"casestringtest023", new Action(()=> { ; }) },
  435. {"casestringtest024", new Action(()=> { ; }) },
  436. {"casestringtest025", new Action(()=> { ; }) },
  437. {"casestringtest026", new Action(()=> { ; }) },
  438. {"casestringtest027", new Action(()=> { ; }) },
  439. {"casestringtest028", new Action(()=> { ; }) },
  440. {"casestringtest029", new Action(()=> { ; }) },
  441. {"casestringtest030", new Action(()=> { ; }) },
  442. {"casestringtest031", new Action(()=> { ; }) },
  443. {"casestringtest032", new Action(()=> { ; }) },
  444. {"casestringtest033", new Action(()=> { ; }) },
  445. {"casestringtest034", new Action(()=> { ; }) },
  446. {"casestringtest035", new Action(()=> { ; }) },
  447. {"casestringtest036", new Action(()=> { ; }) },
  448. {"casestringtest037", new Action(()=> { ; }) },
  449. {"casestringtest038", new Action(()=> { ; }) },
  450. {"casestringtest039", new Action(()=> { ; }) },
  451. {"casestringtest040", new Action(()=> { ; }) },
  452. {"casestringtest041", new Action(()=> { ; }) },
  453. {"casestringtest042", new Action(()=> { ; }) },
  454. {"casestringtest043", new Action(()=> { ; }) },
  455. {"casestringtest044", new Action(()=> { ; }) },
  456. {"casestringtest045", new Action(()=> { ; }) },
  457. {"casestringtest046", new Action(()=> { ; }) },
  458. {"casestringtest047", new Action(()=> { ; }) },
  459. {"casestringtest048", new Action(()=> { ; }) },
  460. {"casestringtest049", new Action(()=> { ; }) },
  461. {"casestringtest050", new Action(()=> { ; }) },
  462. {"stringcasetest001", new Action(()=> { ; }) },
  463. {"stringcasetest002", new Action(()=> { ; }) },
  464. {"stringcasetest003", new Action(()=> { ; }) },
  465. {"stringcasetest004", new Action(()=> { ; }) },
  466. {"stringcasetest005", new Action(()=> { ; }) },
  467. {"stringcasetest006", new Action(()=> { ; }) },
  468. {"stringcasetest007", new Action(()=> { ; }) },
  469. {"stringcasetest008", new Action(()=> { ; }) },
  470. {"stringcasetest009", new Action(()=> { ; }) },
  471. {"stringcasetest010", new Action(()=> { ; }) },
  472. {"stringcasetest011", new Action(()=> { ; }) },
  473. {"stringcasetest012", new Action(()=> { ; }) },
  474. {"stringcasetest013", new Action(()=> { ; }) },
  475. {"stringcasetest014", new Action(()=> { ; }) },
  476. {"stringcasetest015", new Action(()=> { ; }) },
  477. {"stringcasetest016", new Action(()=> { ; }) },
  478. {"stringcasetest017", new Action(()=> { ; }) },
  479. {"stringcasetest018", new Action(()=> { ; }) },
  480. {"stringcasetest019", new Action(()=> { ; }) },
  481. {"stringcasetest020", new Action(()=> { ; }) },
  482. {"stringcasetest021", new Action(()=> { ; }) },
  483. {"stringcasetest022", new Action(()=> { ; }) },
  484. {"stringcasetest023", new Action(()=> { ; }) },
  485. {"stringcasetest024", new Action(()=> { ; }) },
  486. {"stringcasetest025", new Action(()=> { ; }) },
  487. {"stringcasetest026", new Action(()=> { ; }) },
  488. {"stringcasetest027", new Action(()=> { ; }) },
  489. {"stringcasetest028", new Action(()=> { ; }) },
  490. {"stringcasetest029", new Action(()=> { ; }) },
  491. {"stringcasetest030", new Action(()=> { ; }) },
  492. {"stringcasetest031", new Action(()=> { ; }) },
  493. {"stringcasetest032", new Action(()=> { ; }) },
  494. {"stringcasetest033", new Action(()=> { ; }) },
  495. {"stringcasetest034", new Action(()=> { ; }) },
  496. {"stringcasetest035", new Action(()=> { ; }) },
  497. {"stringcasetest036", new Action(()=> { ; }) },
  498. {"stringcasetest037", new Action(()=> { ; }) },
  499. {"stringcasetest038", new Action(()=> { ; }) },
  500. {"stringcasetest039", new Action(()=> { ; }) },
  501. {"stringcasetest040", new Action(()=> { ; }) },
  502. {"stringcasetest041", new Action(()=> { ; }) },
  503. {"stringcasetest042", new Action(()=> { ; }) },
  504. {"stringcasetest043", new Action(()=> { ; }) },
  505. {"stringcasetest044", new Action(()=> { ; }) },
  506. {"stringcasetest045", new Action(()=> { ; }) },
  507. {"stringcasetest046", new Action(()=> { ; }) },
  508. {"stringcasetest047", new Action(()=> { ; }) },
  509. {"stringcasetest048", new Action(()=> { ; }) },
  510. {"stringcasetest049", new Action(()=> { ; }) },
  511. {"stringcasetest050", new Action(()=> { _hitCounter++; }) },
  512. };
  513. }
  514. }
  515.  
Time limit exceeded #stdin #stdout 5s 35856KB
stdin
Standard input is empty
stdout
TestPattern1
test1 elapsed:525msec hitCounter:10000000
test2 elapsed:524msec hitCounter:10000000
test3 elapsed:524msec hitCounter:10000000

TestPattern2
test1 elapsed:524msec hitCounter:10000000
test2 elapsed:525msec hitCounter:10000000
test3 elapsed:526msec hitCounter:10000000

TestPattern3
test1 elapsed:508msec hitCounter:10000000
test2 elapsed:503msec hitCounter:10000000
test3 elapsed:502msec hitCounter:10000000

TestPattern4
test1 elapsed:522msec hitCounter:10000000
test2 elapsed:525msec hitCounter:10000000