Информация об изменениях

Сообщение Re[11]: [performance] чего-то я не понимаю в этой жизни от 01.07.2022 6:27

Изменено 01.07.2022 6:42 rg45

Re[11]: [performance] чего-то я не понимаю в этой жизни
Здравствуйте, Codealot, Вы писали:

C>Как я уже писал — рандом всё еще кривой, но это уже не так важно. Если увеличить размер массива до 0x4000'000, то твой код исполняется около 3.5 секунд. А код на C# — 1.2 секунды.

C>
  Скрытый текст
C>
C>        static void Main(string[] args)
C>        {
C>            var vals = new string[0x4000_000];

C>            var watch = Stopwatch.StartNew();
C>            var random = new Random(0);
C>            for (var i = 0; i < vals.Length; i++)
C>            {
C>                vals[i] = random.Next().ToString();
C>            }

C>            watch.Stop();
C>            Console.WriteLine($"Init: {watch.Elapsed.TotalSeconds}");

C>            TestPerformanceManaged(vals);
C>        }

C>        static void TestPerformanceManaged(string[] vals)
C>        {
C>            var watch = Stopwatch.StartNew();

C>            var res = 0L;

C>            foreach (var val in vals)
C>            {
C>                var num = int.Parse(val);
C>                res += num;
C>            }

C>            Trace.WriteLine(res);

C>            watch.Stop();
C>            Console.WriteLine($"TestPerformanceManaged: {watch.Elapsed.TotalSeconds}");
C>        }
C>


C>Не забывай запускать в релизе и без отладчика.

Запускаю в релизе и без отладчика: мой пример — 3567 ms, твой:
Init: 35.8582711
TestPerformanceManaged: 7.8206846


Скриншоты прислать?
Re[11]: [performance] чего-то я не понимаю в этой жизни
Здравствуйте, Codealot, Вы писали:

C>Как я уже писал — рандом всё еще кривой, но это уже не так важно. Если увеличить размер массива до 0x4000'000, то твой код исполняется около 3.5 секунд. А код на C# — 1.2 секунды.

C>
  Скрытый текст
C>
C>        static void Main(string[] args)
C>        {
C>            var vals = new string[0x4000_000];

C>            var watch = Stopwatch.StartNew();
C>            var random = new Random(0);
C>            for (var i = 0; i < vals.Length; i++)
C>            {
C>                vals[i] = random.Next().ToString();
C>            }

C>            watch.Stop();
C>            Console.WriteLine($"Init: {watch.Elapsed.TotalSeconds}");

C>            TestPerformanceManaged(vals);
C>        }

C>        static void TestPerformanceManaged(string[] vals)
C>        {
C>            var watch = Stopwatch.StartNew();

C>            var res = 0L;

C>            foreach (var val in vals)
C>            {
C>                var num = int.Parse(val);
C>                res += num;
C>            }

C>            Trace.WriteLine(res);

C>            watch.Stop();
C>            Console.WriteLine($"TestPerformanceManaged: {watch.Elapsed.TotalSeconds}");
C>        }
C>


C>Не забывай запускать в релизе и без отладчика.

Запускаю в релизе и без отладчика: мой пример — 3567 ms, твой:
Init: 35.8582711
TestPerformanceManaged: 7.8206846


Вот скриншоты: