ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ืฉืœื•ื ืœื›ื•ืœื! ืžืืžืจ ื–ื” ื”ื•ื ืื•ืกืฃ ืฉืœ ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืช ืฉืขืžื™ืชื™ื™ ื•ืื ื™ ื”ืฉืชืžืฉื ื• ื‘ืžืฉืš ื–ืžืŸ ืจื‘ ื›ืืฉืจ ืขื•ื‘ื“ื™ื ืขืœ ืคืจื•ื™ืงื˜ื™ื ืฉื•ื ื™ื.

ืžื™ื“ืข ืขืœ ื”ืžื›ื•ื ื” ืฉื‘ื” ื‘ื•ืฆืขื• ื”ื—ื™ืฉื•ื‘ื™ื:BenchmarkDotNet=v0.11.5, OS=Windows 10.0.18362
Intel Core i5-8250U CPU 1.60GHz (Kaby Lake R), ืžืขื‘ื“ ืื—ื“, 1 ืœื™ื‘ื•ืช ืœื•ื’ื™ื•ืช ื•-8 ืคื™ื–ื™ื•ืช
.NET Core SDK=3.0.100
[ืžืืจื—]: .NET Core 2.2.7 (CoreCLR 4.6.28008.02, CoreFX 4.6.28008.03), 64bit RyuJIT
ืœื™ื‘ื”: .NET Core 2.2.7 (CoreCLR 4.6.28008.02, CoreFX 4.6.28008.03), 64bit RyuJIT
[ืžืืจื—]: .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), 64bit RyuJIT
ืœื™ื‘ื”: .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), 64bit RyuJIT

Job=Core Runtime=Core

ToList ืœืขื•ืžืช ToArray ื•ืžื—ื–ื•ืจื™ื


ืชื›ื ื ืชื™ ืœื”ื›ื™ืŸ ืืช ื”ืžื™ื“ืข ื”ื–ื” ืขื ืฉื—ืจื•ืจื• ืฉืœ .NET Core 3.0, ืื‘ืœ ื”ื ื ื™ืฆื—ื• ืื•ืชื™, ืื ื™ ืœื ืจื•ืฆื” ืœื’ื ื•ื‘ ืืช ื”ืชื”ื™ืœื” ืฉืœ ืžื™ืฉื”ื• ืื—ืจ ื•ืœื”ืขืชื™ืง ืžื™ื“ืข ืฉืœ ืื ืฉื™ื ืื—ืจื™ื, ืื– ืื ื™ ืจืง ืืฆื™ื™ืŸ ืงื™ืฉื•ืจ ืœืžืืžืจ ื˜ื•ื‘ ืฉื‘ื• ื”ื”ืฉื•ื•ืื” ืžืชื•ืืจืช ื‘ืคื™ืจื•ื˜.

ื‘ืฉืžื™, ืื ื™ ืจืง ืจื•ืฆื” ืœื”ืฆื™ื’ ื‘ืคื ื™ื›ื ืืช ื”ืžื“ื™ื“ื•ืช ื•ื”ืชื•ืฆืื•ืช ืฉืœื™; ื”ื•ืกืคืชื™ ืœื”ื ืœื•ืœืื•ืช ื”ืคื•ื›ื•ืช ืœืื•ื”ื‘ื™ "ืกื’ื ื•ืŸ C++" ืฉืœ ืœื•ืœืื•ืช ื›ืชื™ื‘ื”.

ืงื•ื“:

public class Bench
    {
        private List<int> _list;
        private int[] _array;

        [Params(100000, 10000000)] public int N;

        [GlobalSetup]
        public void Setup()
        {
            const int MIN = 1;
            const int MAX = 10;
            Random random = new Random();
            _list = Enumerable.Repeat(0, N).Select(i => random.Next(MIN, MAX)).ToList();
            _array = _list.ToArray();
        }

        [Benchmark]
        public int ForList()
        {
            int total = 0;
            for (int i = 0; i < _list.Count; i++)
            {
                total += _list[i];
            }

            return total;
        }
        
        [Benchmark]
        public int ForListFromEnd()
        {
            int total = 0;t
            for (int i = _list.Count-1; i > 0; i--)
            {
                total += _list[i];
            }

            return total;
        }

        [Benchmark]
        public int ForeachList()
        {
            int total = 0;
            foreach (int i in _list)
            {
                total += i;
            }

            return total;
        }

        [Benchmark]
        public int ForeachArray()
        {
            int total = 0;
            foreach (int i in _array)
            {
                total += i;
            }

            return total;
        }

        [Benchmark]
        public int ForArray()
        {
            int total = 0;
            for (int i = 0; i < _array.Length; i++)
            {
                total += _array[i];
            }

            return total;
        }
        
        [Benchmark]
        public int ForArrayFromEnd()
        {
            int total = 0;
            for (int i = _array.Length-1; i > 0; i--)
            {
                total += _array[i];
            }

            return total;
        }
    }

ืžื”ื™ืจื•ื™ื•ืช ื”ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core 2.2 ื•-3.0 ื›ืžืขื˜ ื–ื”ื•ืช. ื”ื ื” ืžื” ืฉื”ืฆืœื—ืชื™ ืœื”ืฉื™ื’ ื‘-.NET Core 3.0:

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ืื ื• ื™ื›ื•ืœื™ื ืœื”ืกื™ืง ืฉืขื™ื‘ื•ื“ ืื™ื˜ืจื˜ื™ื‘ื™ ืฉืœ ืื•ืกืฃ ืžืขืจืš ืžื”ื™ืจ ื™ื•ืชืจ ื‘ืฉืœ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื”ืคื ื™ืžื™ื•ืช ืฉืœื• ื•ื”ืงืฆืืช ื’ื•ื“ืœ ื”ืื•ืกืฃ ื”ืžืคื•ืจืฉืช ืฉืœื•. ื›ื“ืื™ ื’ื ืœื–ื›ื•ืจ ืฉืœืื•ืกืฃ List ื™ืฉ ื™ืชืจื•ื ื•ืช ืžืฉืœื• ื•ื›ื“ืื™ ืœื”ืฉืชืžืฉ ื‘ืื•ืกืฃ ื”ื ื›ื•ืŸ ื‘ื”ืชืื ืœื—ื™ืฉื•ื‘ื™ื ื”ื ื“ืจืฉื™ื. ื’ื ืื ืืชื ื›ื•ืชื‘ื™ื ืœื•ื’ื™ืงื” ืœืขื‘ื•ื“ื” ืขื ืœื•ืœืื•ืช, ืืœ ืชืฉื›ื—ื• ืฉื–ื• ืœื•ืœืื” ืจื’ื™ืœื” ื•ื”ื™ื ื’ื ื›ืคื•ืคื” ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืืคืฉืจื™ืช ืฉืœ ืœื•ืœืื•ืช. ืžืืžืจ ืคื•ืจืกื ื‘-habr ืœืคื ื™ ื–ืžืŸ ืจื‘: https://habr.com/ru/post/124910/. ื–ื” ืขื“ื™ื™ืŸ ืจืœื•ื•ื ื˜ื™ ื•ืžื•ืžืœืฅ ืœืงืจื™ืื”.

ืœื–ืจื•ืง

ืœืคื ื™ ืฉื ื”, ืขื‘ื“ืชื™ ื‘ื—ื‘ืจื” ืขืœ ืคืจื•ื™ืงื˜ ืžื“ื•ืจ ืงื•ื“ื, ื‘ืคืจื•ื™ืงื˜ ื–ื” ื”ื™ื” ื ื•ืจืžืœื™ ืœืขื‘ื“ ืื™ืžื•ืช ืฉื“ื” ื‘ืืžืฆืขื•ืช ืžื‘ื ื” ืฉืœ try-catch-throw. ื›ื‘ืจ ืื– ื”ื‘ื ืชื™ ืฉื–ื” ื”ื™ื’ื™ื•ืŸ ืขืกืงื™ ืœื ื‘ืจื™ื ืœืคืจื•ื™ืงื˜, ืื– ืื ืืคืฉืจ ื ื™ืกื™ืชื™ ืœื ืœื”ืฉืชืžืฉ ื‘ืขื™ืฆื•ื‘ ื›ื–ื”. ืื‘ืœ ื‘ื•ืื• ื ื‘ื™ืŸ ืžื“ื•ืข ื”ื’ื™ืฉื” ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื‘ื‘ื ื™ื™ื” ื›ื–ื• ื”ื™ื ื’ืจื•ืขื”. ื›ืชื‘ืชื™ ืงื•ื“ ืงื˜ืŸ ื›ื“ื™ ืœื”ืฉื•ื•ืช ื‘ื™ืŸ ืฉืชื™ ื”ื’ื™ืฉื•ืช ื•ื”ื›ื ืชื™ ืืžื•ืช ืžื™ื“ื” ืœื›ืœ ืืคืฉืจื•ืช.

ืงื•ื“:

        public bool ContainsHash()
        {
            bool result = false;
            foreach (var file in _files)
            {
                var extension = Path.GetExtension(file);
                if (_hash.Contains(extension))
                    result = true;
            }

            return result;
        }

        public bool ContainsHashTryCatch()
        {
            bool result = false;
            try
            {
                foreach (var file in _files)
                {
                    var extension = Path.GetExtension(file);
                    if (_hash.Contains(extension))
                        result = true;
                }
                
                if(!result) 
                    throw new Exception("false");
            }
            catch (Exception e)
            {
                result = false;
            }

            return result;
        }

ืœืชื•ืฆืื•ืช ื‘-.NET Core 3.0 ื•-Core 2.2 ื™ืฉ ืชื•ืฆืื” ื“ื•ืžื” (.NET Core 3.0):

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

Try catch ืžืงืฉื” ืขืœ ื”ื‘ื ืช ื”ืงื•ื“ ื•ืžื’ื“ื™ืœ ืืช ื–ืžืŸ ื”ื‘ื™ืฆื•ืข ืฉืœ ื”ืชื•ื›ื ื™ืช ืฉืœืš. ืื‘ืœ ืื ืืชื” ืฆืจื™ืš ืืช ื”ื‘ื ื™ื™ื” ื”ื–ื•, ืืชื” ืœื ืฆืจื™ืš ืœื”ื›ื ื™ืก ืืช ืฉื•ืจื•ืช ื”ืงื•ื“ ืฉืœื ืฆืคื•ื™ื•ืช ืœื˜ืคืœ ื‘ืฉื’ื™ืื•ืช - ื–ื” ื™ืงืœ ืขืœ ื”ื‘ื ืช ื”ืงื•ื“. ืœืžืขืฉื”, ืœื ื›ืœ ื›ืš ื”ื˜ื™ืคื•ืœ ื‘ื—ืจื™ื’ื™ื ื˜ื•ืขืŸ ืืช ื”ืžืขืจื›ืช, ืืœื ื”ืฉืœื›ืช ื”ืฉื’ื™ืื•ืช ืขืฆืžืŸ ื“ืจืš ืžื‘ื ื” ื”-exception new throw.

ื–ืจื™ืงืช ื—ืจื™ื’ื™ื ืื™ื˜ื™ืช ื™ื•ืชืจ ืžืืฉืจ ืžื—ืœืงื” ื›ืœืฉื”ื™ ืฉืชืืกื•ืฃ ืืช ื”ืฉื’ื™ืื” ื‘ืคื•ืจืžื˜ ื”ื ื“ืจืฉ. ืื ืืชื” ืžืขื‘ื“ ื˜ื•ืคืก ืื• ื ืชื•ื ื™ื ืžืกื•ื™ืžื™ื ื•ืืชื” ื™ื•ื“ืข ื‘ื‘ื™ืจื•ืจ ืžื” ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื”ืฉื’ื™ืื”, ืœืžื” ืœื ืœืขื‘ื“ ืื•ืชื”?

ืื™ืŸ ืœื›ืชื•ื‘ ืžื‘ื ื” () throw new Exception ืื ืžืฆื‘ ื–ื” ืื™ื ื• ื—ืจื™ื’. ื˜ื™ืคื•ืœ ื•ื–ืจื™ืงืช ื—ืจื™ื’ ื™ืงืจ ืžืื•ื“!!!

ToLower, ToLowerInvariant, ToUpper, ToUpperInvariant

ื‘ืžื”ืœืš 5 ืฉื ื•ืช ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื‘ืขื‘ื•ื“ื” ืขืœ ืคืœื˜ืคื•ืจืžืช NET, ื ืชืงืœืชื™ ื‘ืคืจื•ื™ืงื˜ื™ื ืจื‘ื™ื ืฉื”ืฉืชืžืฉื• ื‘ื”ืชืืžืช ืžื—ืจื•ื–ื•ืช. ืจืื™ืชื™ ื’ื ืืช ื”ืชืžื•ื ื” ื”ื‘ืื”: ื”ื™ื” ืคืชืจื•ืŸ Enterprise ืื—ื“ ืขื ื”ืจื‘ื” ืคืจื•ื™ืงื˜ื™ื, ืฉื›ืœ ืื—ื“ ืžื”ื ื‘ื™ืฆืข ื”ืฉื•ื•ืื•ืช ืžื—ืจื•ื–ื•ืช ื‘ืฆื•ืจื” ืฉื•ื ื”. ืื‘ืœ ื‘ืžื” ื™ืฉ ืœื”ืฉืชืžืฉ ื•ื›ื™ืฆื“ ืœืื—ื“ ืื•ืชื•? ื‘ืกืคืจ CLR via C# ืžืืช Richter, ืงืจืืชื™ ืžื™ื“ืข ืฉืฉื™ื˜ืช ToUpperInvariant() ืžื”ื™ืจื” ื™ื•ืชืจ ืž-ToLowerInvariant().

ืงื˜ืข ืžื”ืกืคืจ:

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื›ืžื•ื‘ืŸ, ืœื ื”ืืžื ืชื™ ื•ื”ื—ืœื˜ืชื™ ืœื”ืจื™ืฅ ืื– ื›ืžื” ื‘ื“ื™ืงื•ืช ื‘-.NET Framework ื•ื”ืชื•ืฆืื” ื–ืขื–ืขื” ืื•ืชื™ - ืขืœื™ื™ื” ืฉืœ ื™ื•ืชืจ ืž-15% ื‘ื‘ื™ืฆื•ืขื™ื. ื•ืื–, ื›ืฉื”ื’ืขืชื™ ืœืขื‘ื•ื“ื” ืœืžื—ืจืช ื‘ื‘ื•ืงืจ, ื”ืจืื™ืชื™ ืืช ื”ืžื“ื™ื“ื•ืช ื”ืœืœื• ืœืžืžื•ื ื™ื ืขืœื™ ื•ื ืชืชื™ ืœื”ื ื’ื™ืฉื” ืœืงื•ื“ ื”ืžืงื•ืจ. ืœืื—ืจ ืžื›ืŸ, 2 ืžืชื•ืš 14 ืคืจื•ื™ืงื˜ื™ื ืฉื•ื ื• ื›ื“ื™ ืœื”ืชืื™ื ืืช ื”ืžื“ื™ื“ื•ืช ื”ื—ื“ืฉื•ืช, ื•ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉืฉื ื™ ื”ืคืจื•ื™ืงื˜ื™ื ื”ืœืœื• ื”ื™ื• ืงื™ื™ืžื™ื ืœืขื™ื‘ื•ื“ ื˜ื‘ืœืื•ืช ืืงืกืœ ืขื ืงื™ื•ืช, ื”ืชื•ืฆืื” ื”ื™ื™ืชื” ื™ื•ืชืจ ืžืžืฉืžืขื•ืชื™ืช ืขื‘ื•ืจ ื”ืžื•ืฆืจ.

ื›ืžื• ื›ืŸ, ืื ื™ ืžืฆื™ื’ ื‘ืคื ื™ื›ื ืžื“ื™ื“ื•ืช ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ .NET Core, ื›ืš ืฉื›ืœ ืื—ื“ ืžื›ื ื™ื•ื›ืœ ืœื‘ื—ื•ืจ ืœืงืจืืช ื”ืคืชืจื•ืŸ ื”ืื•ืคื˜ื™ืžืœื™ ื‘ื™ื•ืชืจ. ื•ืื ื™ ืจืง ืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืฉื‘ื—ื‘ืจื” ืฉื‘ื” ืื ื™ ืขื•ื‘ื“, ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘-ToUpper() ื›ื“ื™ ืœื”ืฉื•ื•ืช ืžื—ืจื•ื–ื•ืช.

ืงื•ื“:

public const string defaultString =  "VXTDuob5YhummuDq1PPXOHE4PbrRjYfBjcHdFs8UcKSAHOCGievbUItWhU3ovCmRALgdZUG1CB0sQ4iMj8Z1ZfkML2owvfkOKxBCoFUAN4VLd4I8ietmlsS5PtdQEn6zEgy1uCVZXiXuubd0xM5ONVZBqDu6nOVq1GQloEjeRN8jXrj0MVUexB9aIECs7caKGddpuut3";

        [Benchmark]
        public bool ToLower()
        {
            return defaultString.ToLower() == defaultString.ToLower();
        }

        [Benchmark]
        public bool ToLowerInvariant()
        {
            return defaultString.ToLowerInvariant() == defaultString.ToLowerInvariant();
        }

        [Benchmark]
        public bool ToUpper()
        {
            return defaultString.ToUpper() == defaultString.ToUpper();
        }

        [Benchmark]
        public bool ToUpperInvariant()
        {
            return defaultString.ToUpperInvariant() == defaultString.ToUpperInvariant();
        }

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘-.NET Core 3.0, ื”ืขืœื™ื™ื” ืขื‘ื•ืจ ื›ืœ ืื—ืช ืžื”ืฉื™ื˜ื•ืช ื”ืœืœื• ื”ื™ื ~x2 ื•ืžืื–ื ืช ืืช ื”ื”ื˜ืžืขื•ืช ื‘ื™ื ืŸ ืœื‘ื™ืŸ ืขืฆืžืŸ.

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ืงื•ืžืคื™ืœืฆื™ื” ืฉื›ื‘ืชื™ืช

ื‘ืžืืžืจ ื”ืื—ืจื•ืŸ ืฉืœื™ ืชื™ืืจืชื™ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื–ื• ื‘ืงืฆืจื”, ื‘ืจืฆื•ื ื™ ืœืชืงืŸ ื•ืœื”ืฉืœื™ื ืืช ื“ื‘ืจื™. ืงื•ืžืคื™ืœืฆื™ื” ืžืจื•ื‘ืช ืจืžื•ืช ืžื–ืจื–ืช ืืช ื–ืžืŸ ื”ืืชื—ื•ืœ ืฉืœ ื”ืคืชืจื•ืŸ ืฉืœืš, ืื‘ืœ ืืชื” ืžืงืจื™ื‘ ืฉื—ืœืงื™ื ืžื”ืงื•ื“ ืฉืœืš ื™ื•ืจื›ื‘ื• ืœื’ืจืกื” ืื•ืคื˜ื™ืžืœื™ืช ื™ื•ืชืจ ื‘ืจืงืข, ืžื” ืฉื™ื›ื•ืœ ืœื”ื›ื ื™ืก ืชืงื•ืจื” ืงื˜ื ื”. ืขื ื”ื•ืคืขืชื” ืฉืœ NET Core 3.0, ื–ืžืŸ ื”ื‘ื ื™ื™ื” ืฉืœ ืคืจื•ื™ืงื˜ื™ื ืขื ื”ืคืขืœืช ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ืฉื›ื‘ื•ืช ืคื—ืช ื•ื‘ืื’ื™ื ื”ืงืฉื•ืจื™ื ืœื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื• ืชื•ืงื ื•. ื‘ืขื‘ืจ, ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื• ื”ื•ื‘ื™ืœื” ืœืฉื’ื™ืื•ืช ื‘ื‘ืงืฉื•ืช ื”ืจืืฉื•ื ื•ืช ื‘-ASP.NET Core ื•ื”ืงืคืื” ื‘ืžื”ืœืš ื”ื‘ื ื™ื™ื” ื”ืจืืฉื•ื ื” ื‘ืžืฆื‘ ืงื•ืžืคื™ืœืฆื™ื” ืžืจื•ื‘ืช ืจืžื•ืช. ื–ื” ืžื•ืคืขืœ ื›ืจื’ืข ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘-.NET Core 3.0, ืื‘ืœ ืืชื” ื™ื›ื•ืœ ืœื”ืฉื‘ื™ืช ืื•ืชื• ืื ืชืจืฆื”. ืื ืืชื” ื‘ืขืžื“ื” ืฉืœ ืจืืฉ ืฆื•ื•ืช, ื‘ื›ื™ืจ, ืืžืฆืขื™, ืื• ืฉืืชื” ืจืืฉ ืžื—ืœืงื”, ืื– ืืชื” ื—ื™ื™ื‘ ืœื”ื‘ื™ืŸ ืฉืคื™ืชื•ื— ืžื”ื™ืจ ืฉืœ ืคืจื•ื™ืงื˜ื™ื ืžืขืœื” ืืช ื”ืขืจืš ืฉืœ ื”ืฆื•ื•ืช ื•ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื• ืชืืคืฉืจ ืœืš ืœื—ืกื•ืš ื–ืžืŸ ืœืฉื ื™ ื”ืžืคืชื—ื™ื ื•ื–ืžืŸ ื”ืคืจื•ื™ืงื˜ ืขืฆืžื•.

ืจืžืช NET ืขื•ืœื”

ืฉื“ืจื’ ืืช ื’ืจืกืช ื”-.NET Framework / .NET Core ืฉืœืš. ืœืขืชื™ื ืงืจื•ื‘ื•ืช, ื›ืœ ื’ืจืกื” ื—ื“ืฉื” ืžืกืคืงืช ืฉื™ืคื•ืจื™ ื‘ื™ืฆื•ืขื™ื ื ื•ืกืคื™ื ื•ืžื•ืกื™ืคื” ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช.

ืื‘ืœ ืžื” ื‘ื“ื™ื•ืง ื”ื™ืชืจื•ื ื•ืช? ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื›ืžื” ืžื”ื:

  • NET Core 3.0 ื”ืฆื™ื’ ืชืžื•ื ื•ืช R2R ืฉื™ืคื—ื™ืชื• ืืช ื–ืžืŸ ื”ืืชื—ื•ืœ ืฉืœ ื™ื™ืฉื•ืžื™ .NET Core.
  • ืขื ื’ืจืกื” 2.2 ื”ื•ืคื™ืข ืงื•ืžืคื™ืœืฆื™ื” ืฉื›ื‘ืชื™ืช, ืฉื‘ื–ื›ื•ืชื” ืžืชื›ื ืชื™ื ื™ืฉืงื™ืขื• ืคื—ื•ืช ื–ืžืŸ ื‘ื”ืฉืงืช ืคืจื•ื™ืงื˜.
  • ืชืžื™ื›ื” ื‘ืชืงื ื™ NET ื—ื“ืฉื™ื.
  • ืชืžื™ื›ื” ื‘ื’ืจืกื” ื—ื“ืฉื” ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช.
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”, ืขื ื›ืœ ื’ืจืกื” ื—ื“ืฉื” ืžืฉืชืคืจืช ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืกืคืจื™ื•ืช ื”ื‘ืกื™ืก Collection/Struct/Stream/String/Regex ื•ืขื•ื“. ืื ืืชื” ืขื•ื‘ืจ ืž-.NET Framework ืœ-.NET Core, ืชืงื‘ืœ ืฉื™ืคื•ืจ ื’ื“ื•ืœ ื‘ื‘ื™ืฆื•ืขื™ื ืžื”ืงื•ืคืกื”. ื›ื“ื•ื’ืžื”, ืื ื™ ืžืฆืจืฃ ืงื™ืฉื•ืจ ืœื›ืžื” ืžื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืฉื ื•ืกืคื• ืœ-.NET Core 3.0: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/

ื‘ื™ืฆื•ืขื™ื ื‘-.NET Core

ืžืกืงื ื”

ื‘ืขืช ื›ืชื™ื‘ืช ืงื•ื“, ื›ื“ืื™ ืœืฉื™ื ืœื‘ ืœื”ื™ื‘ื˜ื™ื ืฉื•ื ื™ื ืฉืœ ื”ืคืจื•ื™ืงื˜ ืฉืœืš ื•ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื•ืช ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช ื•ื”ืคืœื˜ืคื•ืจืžื” ืฉืœืš ื›ื“ื™ ืœื”ืฉื™ื’ ืืช ื”ืชื•ืฆืื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ. ืืฉืžื— ืื ืชื—ืœื•ืง ืืช ื”ื™ื“ืข ืฉืœืš ื‘ื ื•ืฉื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื‘-.NET.

ืงื™ืฉื•ืจ ืœ-github

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”