mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 03:14:47 +00:00
54 lines
1.1 KiB
C#
54 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
|
|
class CacheLoader
|
|
{
|
|
public string Dir { get; }
|
|
|
|
|
|
private readonly Dictionary<string, byte[]> cache = new();
|
|
|
|
public CacheLoader(string dir)
|
|
{
|
|
Dir = dir;
|
|
}
|
|
|
|
public JsonElement LoadOrFromCache(string name)
|
|
{
|
|
if (!cache.TryGetValue(name, out byte[] result))
|
|
{
|
|
result = File.ReadAllBytes($"{Dir}/{name}.json");
|
|
cache.Add(name, result);
|
|
}
|
|
return JsonDocument.Parse(result).RootElement;
|
|
}
|
|
}
|
|
|
|
internal class Benchmark
|
|
{
|
|
public static void Run(string dir)
|
|
{
|
|
var loader = new CacheLoader(dir);
|
|
|
|
var tables = new List<cfg.Tables>();
|
|
|
|
for (int k = 0; k < 10; k++)
|
|
{
|
|
var w = new Stopwatch();
|
|
w.Start();
|
|
for (int i = 0; i < 100; i++)
|
|
{
|
|
tables.Add(new cfg.Tables(loader.LoadOrFromCache));
|
|
}
|
|
w.Stop();
|
|
Console.WriteLine("== cost {0} ms", w.ElapsedMilliseconds);
|
|
}
|
|
}
|
|
|
|
}
|
|
|