По своему опыту я обнаружил, что не могу доверять своей интуиции ни в чем, когда дело касается производительности.Следовательно, я держу в руках быстрое приложение для тестирования производительности (которое я называю «StupidPerformanceTricks»), которое я использую для тестирования этих сценариев.Это бесценно, так как я сделал много удивительных и нелогичных открытий об уловках производительности.Также важно помнить о том, что приложение для тестирования следует запускать в режиме выпуска без подключенного отладчика, так как в противном случае вы не получите JIT-оптимизацию, и эти оптимизации могут иметь существенное значение: метод A может быть медленнее, чем метод B в режиме отладки,но значительно быстрее в режиме выпуска с оптимизированным кодом.
Тем не менее, в целом мой собственный опыт тестирования показывает, что если ваш массив содержит <~ 32 элементов, вы получите лучшую производительность, выполнив свой собственный цикл копирования.- предположительно, потому что у вас нет накладных расходов на вызов метода, что может быть значительным.Однако, если цикл больше ~ 32 элементов, вы получите лучшую производительность с помощью Array.Copy ().(Если вы копируете целые числа, числа с плавающей запятой или другие подобные вещи, вы можете также изучить Buffer.BlockCopy (), который на ~ 10% быстрее, чем Array.Copy () для небольших массивов.) </p>
Но все это говорит о том, что реальный ответ таков: «Напишите свои собственные тесты, которые максимально точно соответствуют этим точным альтернативам, оберните их каждый циклом, дайте циклу достаточно итераций, чтобы он пережевал не менее 2-3 секунд.CPU, а затем сравните альтернативы самостоятельно. "