Guest User

Untitled

a guest
Mar 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5. using System.Security.Cryptography;
  6. using BenchmarkDotNet.Attributes;
  7. using BenchmarkDotNet.Attributes.Columns;
  8. using BenchmarkDotNet.Attributes.Exporters;
  9. using BenchmarkDotNet.Attributes.Jobs;
  10. using BenchmarkDotNet.Running;
  11.  
  12. namespace MyBenchmarks
  13. {
  14. [CoreJob]
  15. [RankColumn]
  16. public class StringBenchmarks
  17. {
  18. private string[] data;
  19.  
  20. [Params(1, 2, 3, 4, 5, 10, 40, 160)]
  21. public int N;
  22.  
  23. [GlobalSetup]
  24. public void Setup()
  25. {
  26. data = Enumerable.Range(0, N).Select(_ => Guid.NewGuid().ToString()).ToArray();
  27. }
  28.  
  29. [Benchmark]
  30. public string WithStupidConcat()
  31. {
  32. var s = "";
  33. foreach (var x in data)
  34. {
  35. s += x;
  36. }
  37. return s;
  38. }
  39.  
  40. [Benchmark]
  41. public string WithStringConcat() => String.Concat(data);
  42.  
  43. [Benchmark]
  44. public string WithStringBuilder()
  45. {
  46. var s = new StringBuilder();
  47. foreach (var x in data)
  48. {
  49. s.Append(x);
  50. }
  51. return s.ToString();
  52. }
  53. }
  54.  
  55. public class Program
  56. {
  57. public static void Main(string[] args)
  58. {
  59. var summary = BenchmarkRunner.Run<StringBenchmarks>();
  60. }
  61. }
  62. }
Add Comment
Please, Sign In to add comment