using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Running; using Fantasy.Async; using Fantasy.InnerMessage; using Fantasy.Network; using Fantasy.Platform.Console; #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. namespace Fantasy.Benchmark; [SimpleJob(RuntimeMoniker.Net80, baseline: true)] public class NetworkBenchmark { private static Scene _scene; private static Session _session; private readonly BenchmarkRequest _benchmarkRequest = new BenchmarkRequest(); public static async FTask Initialize() { // 注册日志实例到框架中 Log.Register(new ConsoleLog()); // 初始化框架 await Entry.Initialize(); // 执行StartUpdate方法 Entry.StartUpdate(); _scene = await Entry.CreateScene(); // 创建远程连接 _session = _scene.Connect("127.0.0.1:20000", NetworkProtocolType.WebSocket, () => { Log.Debug("连接到目标服务器成功"); var summary = BenchmarkRunner.Run(); Console.WriteLine(summary); }, () => { Log.Debug("无法连接到目标服务器"); }, () => { Log.Debug("与服务器断开连接"); }, false); } [Benchmark] public async FTask Call() { await _session.Call(_benchmarkRequest); } }