tests/DotNetCommon.ReduceLambdaPerformance/Program.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Linq;
using System.Linq.Expressions;
using System;
using DotNetCommon;
using DotNetCommon.Extensions;
using System.Collections.Generic;
using System.Diagnostics;
namespace DotNetCommon.ReduceLambdaPerformance
{
internal class Program
{
static void Main(string[] args)
{
object lambda = null;
var st = new Stopwatch();
st.Restart();
lambda = ExpressionHelper.ReduceLambda(GetExpression());
st.Stop();
Console.WriteLine($"预热耗时: {st.ElapsedMilliseconds} 毫秒");
st.Restart();
for (int i = 0; i < 1000; i++)
{
lambda = ExpressionHelper.ReduceLambda(GetExpression());
}
st.Stop();
Console.WriteLine($"1千次耗时: {st.ElapsedMilliseconds} 毫秒,平均: {st.ElapsedMilliseconds / (1000 * 1.0)} 毫秒");
st.Restart();
for (int i = 0; i < 10000; i++)
{
lambda = ExpressionHelper.ReduceLambda(GetExpression());
}
st.Stop();
Console.WriteLine($"1万次耗时: {st.ElapsedMilliseconds} 毫秒,平均: {st.ElapsedMilliseconds / (10000 * 1.0)} 毫秒");
st.Restart();
for (int i = 0; i < 10000 * 10; i++)
{
lambda = ExpressionHelper.ReduceLambda(GetExpression());
}
st.Stop();
Console.WriteLine($"10万次耗时: {st.ElapsedMilliseconds} 毫秒,平均: {st.ElapsedMilliseconds / (10000 * 10 * 1.0)} 毫秒");
Console.WriteLine("Hello, World!");
}
private static Expression<Func<Person, bool>> GetExpression()
{
var list = new List<Person>
{
new Person{Id=1,Name="刘备",Age=40},
new Person{Id=2,Name="关羽",Age=38},
new Person{Id=3,Name="张飞",Age=36}
};
return p => p.Id < 100
& list.Select(i => i.Id).Contains(p.Id)
& p.Name.StartsWith(list.FirstOrDefault(i => i.Age >= 40).Name.SplitAndTrim("").FirstOrDefault())
后面还有 17 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
