Подтвердить что ты не робот

Int32 против производительности Int64 на 64-битной платформе?

Мой вопрос относительно просто. На 32-битных платформах лучше всего использовать Int32, а не короткие или длинные из-за процессора, обрабатывающего 32 бита за раз. Таким образом, в 64-битной архитектуре это означает, что быстрее использовать длинные рабочие характеристики? Я создал быстрое и грязное приложение, которое копирует int и длинные массивы для тестирования тестов. Вот код (я его предупреждал):

static void Main(string[] args)
    {
        var lar = new long[256];

        for(int z = 1; z<=256;z++)
        {
            lar[z-1] = z;
        }
        var watch = DateTime.Now;
        for (int z = 0; z < 100000000; z++)
        {
            var lard = new long[256];
            lar.CopyTo(lard, 0);

        }
        var res2 = watch - DateTime.Now;

        var iar = new int[256];

        for (int z = 1; z <= 256; z++)
        {
            iar[z - 1] = z;
        }

        watch = DateTime.Now;

        for (int z = 0; z < 100000000; z++)
        {
            var iard = new int[256];
            iar.CopyTo(iar, 0);

        }

        var res1 = watch - DateTime.Now;
        Console.WriteLine(res1);
        Console.WriteLine(res2);


    }

Полученные результаты дают примерно в 3 раза быстрее, чем int. Что заставляет меня любопытно, следует ли мне начинать использовать долготы для счетчиков и т.д. Я также сделал аналогичный тест-тест и долгое время был несущественным. Кто-нибудь имеет на это свой вклад? Я также понимаю, что даже если длинные будут быстрее, они будут занимать в два раза больше места.

4b9b3361

Ответ 1

Нет. Для 32-разрядного процессора требуется 64-разрядное время, потому что процессор может обрабатывать только 32 бита за раз. 64-битный процессор будет просто игнорировать отсутствующие 32-битные.

Кроме того, постарайтесь не превентивно оптимизировать слишком много. Оптимизируйте только тогда, когда есть заметное узкое место.