using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
var stopWatch = new Stopwatch();
stopWatch.Start();
var list = new List<int>();
foreach (var i in Enumerable.Range(0, 10000))
{
list.Add(i);
}
stopWatch.Stop();
Console.WriteLine($"Count:{list.Count}");
Console.WriteLine($"time:{stopWatch.ElapsedTicks}");
list = new List<int>();
stopWatch = new Stopwatch();
stopWatch.Start();
Parallel.ForEach(Enumerable.Range(0, 10000), new ParallelOptions() { MaxDegreeOfParallelism = 1000 }, i =>
{
lock(list)
{
list.Add(i);
}
});
stopWatch.Stop();
Console.WriteLine($"Count:{list.Count}");
Console.WriteLine($"time:{stopWatch.ElapsedTicks}");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQ7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgQ29uc29sZUFwcGxpY2F0aW9uNQp7CiAgICBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHN0b3BXYXRjaCA9IG5ldyBTdG9wd2F0Y2goKTsKICAgICAgICAgICAgc3RvcFdhdGNoLlN0YXJ0KCk7CgogICAgICAgICAgICB2YXIgbGlzdCA9IG5ldyBMaXN0PGludD4oKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpIGluIEVudW1lcmFibGUuUmFuZ2UoMCwgMTAwMDApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsaXN0LkFkZChpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RvcFdhdGNoLlN0b3AoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJDb3VudDp7bGlzdC5Db3VudH0iKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJ0aW1lOntzdG9wV2F0Y2guRWxhcHNlZFRpY2tzfSIpOwoKICAgICAgICAgICAgbGlzdCA9IG5ldyBMaXN0PGludD4oKTsKICAgICAgICAgICAgc3RvcFdhdGNoID0gbmV3IFN0b3B3YXRjaCgpOwogICAgICAgICAgICBzdG9wV2F0Y2guU3RhcnQoKTsKICAgICAgICAgICAgUGFyYWxsZWwuRm9yRWFjaChFbnVtZXJhYmxlLlJhbmdlKDAsIDEwMDAwKSwgbmV3IFBhcmFsbGVsT3B0aW9ucygpIHsgTWF4RGVncmVlT2ZQYXJhbGxlbGlzbSA9IDEwMDAgfSwgaSA9PgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsb2NrKGxpc3QpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbGlzdC5BZGQoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgc3RvcFdhdGNoLlN0b3AoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJDb3VudDp7bGlzdC5Db3VudH0iKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJ0aW1lOntzdG9wV2F0Y2guRWxhcHNlZFRpY2tzfSIpOwogICAgICAgIH0KICAgIH0KfQ==