Cha*_*ini -1 .net c# arrays performance list
LIST FOR 00:00:00.0000980
LIST FOREACH 00:00:00.0000007
ARRAY FOR 00:00:00.0028450
ARRAY FOREACH 00:00:00.0051233
Run Code Online (Sandbox Code Playgroud)
我一直用数组来制作性能较重的东西,但列表似乎要快得多。
using System;
using System.Diagnostics;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var cron = NCrontab.Advanced.CrontabSchedule.Parse("0 0 1 1 * 2016",
NCrontab.Advanced.Enumerations.CronStringFormat.WithYears);
var date = new System.DateTime(year: 2016, month: 1, day: 1,
hour: 0, minute: 0, second: 0);
int[] testArray = new int[1000000];
List<int> testList = new List<int>(1000000);
var stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < testList.Count;i++)
{
var s = 1;
}
stopWatch.Stop();
Console.WriteLine("LIST FOR " + stopWatch.Elapsed);
stopWatch = new Stopwatch();
stopWatch.Start();
foreach (int i in testList)
{
var d = 1;
}
stopWatch.Stop();
Console.WriteLine("LIST FOREACH " + stopWatch.Elapsed);
stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < testArray.Length;i++)
{
var f = 1;
}
stopWatch.Stop();
Console.WriteLine("ARRAY FOR " + stopWatch.Elapsed);
stopWatch = new Stopwatch();
stopWatch.Start();
foreach (int i in testArray)
{
var h = 1;
}
stopWatch.Stop();
Console.WriteLine("ARRAY FOREACH " + stopWatch.Elapsed);
}
}
Run Code Online (Sandbox Code Playgroud)
https://dotnetfiddle.net/RKWBJl
List内部实现了T[],只是它灵活,并且当Capacity结束时内部不断扩展。由于所有重要的操作都是在内部进行数组操作,只是为动态扩展提供了方便。
我不明白,但对于繁重且频繁的操作我需要知道。
基本上我正在尝试确定什么才是获得高 FPS 更好的方法。
这些测试没有可比性。
这将创建一个包含一百万个条目的数组。
int[] testArray = new int[1000000];
Run Code Online (Sandbox Code Playgroud)
这会创建一个空列表,但在后台分配了最多可容纳一百万个条目的内存(因此在达到一百万之前,它不必调整其内部缓冲区的大小。
List<int> testList = new List<int>(1000000);
Run Code Online (Sandbox Code Playgroud)
因此,testArray.Length这里将是 1000000,并且testList.Count将是 0(因为您没有向其中添加一百万个项目)。
在性能方面,除了循环这些值之外,还需要考虑很多其他事情。例如,如果需要调整数组的大小,则添加或删除项目对于数组来说可能会非常昂贵。
第二件事是,你对这些事情进行基准测试的方法也不会真正可靠。如果您想做实际的基准测试,请查看https://benchmarkdotnet.org,它将正确执行此操作并处理诸如预热运行、内存分配、在不同框架版本上运行等事情。
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |