BenchmarkFor6.3.5

Форк
0
93 строки · 2.4 Кб
1
using System.Globalization;
2
using BenchmarkDotNet.Attributes;
3
using BenchmarkDotNet.Running;
4
using System.Text;
5

6
BenchmarkRunner.Run<StringTest>();
7
 
8
public class StringTest
9
{
10
    string intro = "1@2.0@3@4@5@6@10@12@30@20@31";
11
    [Benchmark]
12
    public string MontirovkaBuild()
13
    {
14
        CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
15
        string[] chisla = intro.Split(new char[]{'@'});
16
        double[] truechisla = new double[chisla.Length];
17
        double max = Convert.ToDouble(chisla[0]);
18
        double min = Convert.ToDouble(chisla[0]);
19
        double max2 = Convert.ToDouble(chisla[1]);
20
        double min2 = Convert.ToDouble(chisla[1]);
21

22
        for (int i = 0; i < chisla.Length; i++)
23
        {
24
            truechisla[i] = Convert.ToDouble(chisla[i]);
25
        }
26
            
27
        if (min2 <= min)
28
        {
29
            double tmp = min2;
30
            min2 = min;
31
            min = tmp;
32
        }
33
            
34
        if (max2 >= max)
35
        {
36
            double tmp = max2;
37
            max2 = max;
38
            max = tmp;
39
        }
40

41
        for (int i = 2; i < truechisla.Length; i++)
42
        {
43
            if (min2 >= truechisla[i])
44
            {
45
                min2 = truechisla[i];
46
            }
47

48
            if (min2 <= min)
49
            {
50
                double tmp = min2;
51
                min2 = min;
52
                min = tmp;
53
            }
54
                
55
            if (max2 <= truechisla[i])
56
            {
57
                max2 = truechisla[i];
58
            }
59

60
            if (max2 >= max)
61
            {
62
                double tmp = max2;
63
                max2 = max;
64
                max = tmp;
65
            }
66
        }
67

68
        return $"{max2}\n{min2}";
69
    }
70
    [Benchmark]
71
    public string MichailBuild()
72
    {
73
        CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
74
        string[] splitNums = intro.Split('@');
75

76
        double[] arr = new double[splitNums.Length];
77

78
        for (int i = 0; i < splitNums.Length; i++)
79
            arr[i] = Convert.ToDouble(splitNums[i]);
80

81
        for (int i = 0; i < splitNums.Length - 1; i++)
82
        for (int j = 0; j < splitNums.Length - i - 1; j++)
83
        {
84
            if (arr[j] > arr[j + 1])
85
            {
86
                double temp = arr[j];
87
                arr[j] = arr[j + 1];
88
                arr[j + 1] = temp;
89
            }
90
        }
91
        return $"{arr[arr.Length - 2]}\n{arr[1]}";
92
    }
93
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.