.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻšāĻžāĻ‡ āĻ¸āĻŦ! āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ¸ā§‡āĻ°āĻž āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ¯āĻž āĻ†āĻŽāĻžāĻ° āĻ¸āĻšāĻ•āĻ°ā§āĻŽā§€āĻ°āĻž āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĻā§€āĻ°ā§āĻ˜āĻĻāĻŋāĻ¨ āĻ§āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ¸āĻ›āĻŋāĨ¤

āĻ¯ā§‡ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯:BenchmarkDotNet=v0.11.5, OS=Windows 10.0.18362
āĻ‡āĻ¨ā§āĻŸā§‡āĻ˛ āĻ•ā§‹āĻ° i5-8250U CPU 1.60GHz (Kaby Lake R), 1 CPU, 8 āĻ˛āĻœāĻŋāĻ•ā§āĻ¯āĻžāĻ˛ āĻāĻŦāĻ‚ 4 āĻĢāĻŋāĻœāĻŋāĻ•ā§āĻ¯āĻžāĻ˛ āĻ•ā§‹āĻ°
.NET āĻ•ā§‹āĻ° SDK=3.0.100
[āĻšā§‹āĻ¸ā§āĻŸ]: .NET āĻ•ā§‹āĻ° 2.2.7 (CoreCLR 4.6.28008.02, CoreFX 4.6.28008.03), 64bit RyuJIT
āĻ•ā§‹āĻ°: .NET āĻ•ā§‹āĻ° 2.2.7 (CoreCLR 4.6.28008.02, CoreFX 4.6.28008.03), 64bit RyuJIT
[āĻšā§‹āĻ¸ā§āĻŸ]: .NET āĻ•ā§‹āĻ° 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), 64bit RyuJIT
āĻ•ā§‹āĻ°: .NET āĻ•ā§‹āĻ° 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), 64bit RyuJIT

āĻœāĻŦ=āĻ•ā§‹āĻ° āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ=āĻ•ā§‹āĻ°

ToList āĻŦāĻ¨āĻžāĻŽ ToArray āĻāĻŦāĻ‚ āĻ¸āĻžāĻ‡āĻ•ā§‡āĻ˛


āĻ†āĻŽāĻŋ .NET āĻ•ā§‹āĻ° 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 āĻ•ā§‹āĻ° 2.2 āĻāĻŦāĻ‚ 3.0-āĻ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ—āĻ¤āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨āĨ¤ .NET āĻ•ā§‹āĻ° 3.0-āĻ āĻ†āĻŽāĻŋ āĻ¯āĻž āĻĒā§‡āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻž āĻāĻ–āĻžāĻ¨ā§‡:

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻ†āĻŽāĻ°āĻž āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻāĻ° āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻŦāĻ°āĻžāĻĻā§āĻĻā§‡āĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻžāĻ“ āĻŽā§‚āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ—āĻŖāĻ¨āĻžāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻ¸āĻ āĻŋāĻ• āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ˛ā§‡āĻ–ā§‡āĻ¨, āĻ­ā§āĻ˛ā§‡ āĻ¯āĻžāĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ˛ā§āĻĒ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ˛ā§āĻĒ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ“ āĻŦāĻŸā§‡āĨ¤ āĻ…āĻ¨ā§‡āĻ• āĻĻāĻŋāĻ¨ āĻ†āĻ—ā§‡ āĻšāĻžāĻŦāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: https://habr.com/ru/post/124910/. āĻāĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻāĻŦāĻ‚ āĻĒāĻĄāĻŧāĻž āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ

āĻāĻ• āĻŦāĻ›āĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ—ā§āĻ¯āĻžāĻ¸āĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¸ā§‡āĻ‡ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸā§‡ āĻŸā§āĻ°āĻžāĻ‡-āĻ•ā§āĻ¯āĻžāĻš-āĻĨā§āĻ°ā§‹ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĢāĻŋāĻ˛ā§āĻĄ āĻ­ā§āĻ¯āĻžāĻ˛āĻŋāĻĄā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻž āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ›āĻŋāĻ˛āĨ¤ āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻāĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¸ā§āĻŦāĻžāĻ¸ā§āĻĨā§āĻ¯āĻ•āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ, āĻ¤āĻžāĻ‡ āĻ¯āĻ–āĻ¨āĻ‡ āĻ¸āĻŽā§āĻ­āĻŦ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ¨āĻ•āĻļāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻŦā§‡ āĻ†āĻ¸ā§āĻ¨ āĻœā§‡āĻ¨ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• āĻ•ā§‡āĻ¨ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ–āĻžāĻ°āĻžāĻĒāĨ¤ āĻ†āĻŽāĻŋ āĻĻā§āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•ā§‹āĻĄ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻ•ā§‹āĻĄ:

        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 āĻ•ā§‹āĻ° 3.0 āĻāĻŦāĻ‚ āĻ•ā§‹āĻ° 2.2-āĻāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻāĻ•āĻ‡ āĻ°āĻ•āĻŽ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ (.NET āĻ•ā§‹āĻ° 3.0):

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨ āĻ•ā§āĻ¯āĻžāĻš āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŦā§‹āĻāĻž āĻ•āĻ āĻŋāĻ¨ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻĄā§‡āĻ° āĻ¸ā§‡āĻ‡ āĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻĸā§‹āĻ•āĻžāĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻŦā§‡ āĻŦāĻ˛ā§‡ āĻ†āĻļāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž - āĻāĻŸāĻŋ āĻ•ā§‹āĻĄāĻŸāĻŋāĻ•ā§‡ āĻŦā§‹āĻāĻž āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§āĻ˛āĻŦā§‡ā§ˇ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻāĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻ•ā§‡ āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻŦāĻ°āĻ‚ āĻĨā§āĻ°ā§‹ āĻ¨āĻŋāĻ‰ āĻāĻ•ā§āĻ¸ā§‡āĻĒāĻļāĻ¨ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°ā§‡āĨ¤

āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ§ā§€āĻ° āĻ¯āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻ°ā§āĻŽ āĻŦāĻž āĻ•āĻŋāĻ›ā§ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¯ā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻŸāĻŋ āĻ•ā§€ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤, āĻ•ā§‡āĻ¨ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž?

āĻāĻ‡ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽā§€ āĻ¨āĻž āĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ() āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ˛āĻŋāĻ–āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ–ā§āĻŦ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛!!!

ToLower, ToLowerInvariant, ToUpper, ToUpperInvariant

.NET āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ†āĻŽāĻžāĻ° 5 āĻŦāĻ›āĻ°ā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻžāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻāĻŽāĻ¨ āĻ…āĻ¨ā§‡āĻ• āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ¸ā§‡āĻ›āĻŋ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻŽā§āĻ¯āĻžāĻšāĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ›āĻŦāĻŋāĻŸāĻŋāĻ“ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋ: āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°āĻžāĻ‡āĻœ āĻ¸āĻ˛āĻŋāĻ‰āĻļāĻ¨ āĻ›āĻŋāĻ˛, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ­āĻŋāĻ¨ā§āĻ¨āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ¤āĻŦā§‡ āĻ•ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ? āĻ°āĻŋāĻ–āĻŸāĻžāĻ°ā§‡āĻ° C# āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ CLR āĻŦāĻ‡āĻŸāĻŋāĻ¤ā§‡, āĻ†āĻŽāĻŋ āĻ¤āĻĨā§āĻ¯ āĻĒāĻĄāĻŧā§‡āĻ›āĻŋ āĻ¯ā§‡ ToUpperInvariant() āĻĒāĻĻā§āĻ§āĻ¤āĻŋ ToLowerInvariant() āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻĻā§āĻ°ā§āĻ¤āĨ¤

āĻŦāĻ‡ āĻĨā§‡āĻ•ā§‡ āĻ‰āĻĻā§āĻ§ā§ƒāĻ¤āĻžāĻ‚āĻļ:

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻŽāĻŋ āĻāĻŸāĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°āĻŋāĻ¨āĻŋ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° .NET āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ†āĻŽāĻžāĻ•ā§‡ āĻšāĻ¤āĻŦāĻžāĻ• āĻ•āĻ°ā§‡āĻ›ā§‡ - 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 āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ° 3.0-āĻ, āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§ƒāĻĻā§āĻ§āĻŋ ~x2 āĻāĻŦāĻ‚ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ­āĻžāĻ°āĻ¸āĻžāĻŽā§āĻ¯ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–ā§‡āĨ¤

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻ¸ā§āĻ¤āĻ° āĻ¸āĻ‚āĻ•āĻ˛āĻ¨

āĻ†āĻŽāĻžāĻ° āĻļā§‡āĻˇ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻļāĻŦā§āĻĻāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻĒā§‚āĻ°āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ā§‡āĻļāĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻ˛āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒ āĻŸāĻžāĻ‡āĻŽāĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ¤ā§āĻ¯āĻžāĻ— āĻ•āĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻĄā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ…āĻ‚āĻļ āĻĒāĻŸāĻ­ā§‚āĻŽāĻŋāĻ¤ā§‡ āĻ†āĻ°āĻ“ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ NET Core 3.0-āĻāĻ° āĻ†āĻŦāĻŋāĻ°ā§āĻ­āĻžāĻŦā§‡āĻ° āĻ¸āĻžāĻĨā§‡, āĻŸāĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ¸āĻš āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋāĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻšā§āĻ°āĻžāĻ¸ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ‡ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻŦāĻžāĻ—āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒā§‚āĻ°ā§āĻŦā§‡, āĻāĻ‡ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ•āĻžāĻ°āĻŖā§‡ ASP.NET āĻ•ā§‹āĻ°ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ā§‡āĻļāĻ¨ āĻŽā§‹āĻĄā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻŋāĻ˛ā§āĻĄā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĢā§āĻ°āĻŋāĻœ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ .NET Core 3.0-āĻ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻž āĻ†āĻ›ā§‡, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻšāĻžāĻ‡āĻ˛ā§‡ āĻāĻŸāĻŋ āĻ¨āĻŋāĻˇā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŸāĻŋāĻŽ-āĻ˛āĻŋāĻĄ, āĻ¸āĻŋāĻ¨āĻŋāĻ¯āĻŧāĻ°, āĻŽāĻŋāĻĄāĻ˛ āĻĒāĻĻā§‡ āĻĨāĻžāĻ•ā§‡āĻ¨ āĻŦāĻž āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻ•āĻžāĻļ āĻĻāĻ˛ā§‡āĻ° āĻŽā§‚āĻ˛ā§āĻ¯ āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ‡ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‰āĻ­āĻ¯āĻŧ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻžāĻāĻšāĻžāĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤

.NET āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻ†āĻĒ

āĻ†āĻĒāĻ¨āĻžāĻ° .NET āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• / .NET āĻ•ā§‹āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ†āĻĒāĻ—ā§āĻ°ā§‡āĻĄ āĻ•āĻ°ā§āĻ¨ā§ˇ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ˛āĻžāĻ­ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ—ā§āĻ˛ā§‹ āĻ āĻŋāĻ• āĻ•ā§€? āĻ†āĻ¸ā§āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ¤āĻžāĻ•āĻžāĻ¨:

  • .NET āĻ•ā§‹āĻ° 3.0 R2R āĻšāĻŋāĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ¯āĻž .NET āĻ•ā§‹āĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻļā§āĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ•ā§‡ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻŦā§‡ā§ˇ
  • āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 2.2 āĻāĻ° āĻ¸āĻžāĻĨā§‡, āĻŸāĻŋāĻ¯āĻŧāĻžāĻ° āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ā§‡āĻļāĻ¨ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻžāĻ°āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻŽ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°āĻŦā§‡āĨ¤
  • āĻ¨āĻ¤ā§āĻ¨ .NET āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨āĨ¤
  • āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨āĨ¤
  • āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŦā§‡āĻ¸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨/āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ/āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ/āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚/āĻ°ā§‡āĻœā§‡āĻ•ā§āĻ¸ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ .NET āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĨā§‡āĻ•ā§‡ .NET āĻ•ā§‹āĻ°ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻŦāĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦā§āĻ¸ā§āĻŸ āĻĒāĻžāĻŦā§‡āĻ¨ā§ˇ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡, āĻ†āĻŽāĻŋ .NET Core 3.0 āĻ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ›āĻŋ: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/

.NET āĻ•ā§‹āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻ•ā§‹āĻĄ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĻāĻŋāĻ•ā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ°āĻž āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…āĻ°ā§āĻœāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻāĻŦāĻ‚ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻŽā§‚āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ .NET-āĻ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœā§āĻžāĻžāĻ¨ āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻŋ āĻ–ā§āĻļāĻŋ āĻšāĻŦāĨ¤

Github āĻ˛āĻŋāĻ™ā§āĻ•

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨