public async Task Performance_Test(
        int iterations)
    {
        Stopwatch.Restart();
        for (var iteration = 1; iteration <= iterations; iteration++)
        {
            await L2Cache.SetStringAsync(
                $"Performance:{iteration}",
                "Value",
                new DistributedCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow =
                    TimeSpan.FromMinutes(5),
            });
        }
        Stopwatch.Stop();
        var l2SetTicks = Stopwatch.ElapsedTicks;

        Stopwatch.Restart();
        for (var iteration = 1; iteration <= iterations; iteration++)
        {
            await L1L2Cache.GetStringAsync(
                $"Performance:{iteration}");
        }
        Stopwatch.Stop();
        var l1L2GetPropagationTicks = Stopwatch.ElapsedTicks;

        Stopwatch.Restart();
        for (var iteration = 1; iteration <= iterations; iteration++)
        {
            await L1L2Cache.SetStringAsync(
                $"Performance:{iteration}",
                "Value",
                new DistributedCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow =
                    TimeSpan.FromMinutes(5),
            });
        }
        Stopwatch.Stop();
        var l1L2SetTicks = Stopwatch.ElapsedTicks;

        Stopwatch.Restart();
        for (var iteration = 1; iteration <= iterations; iteration++)
        {
            await L2Cache.GetStringAsync(
                $"Performance:{iteration}");
        }
        Stopwatch.Stop();
        var l2GetTicks = Stopwatch.ElapsedTicks;

        Stopwatch.Restart();
        for (var iteration = 1; iteration <= iterations; iteration++)
        {
            await L1L2Cache.GetStringAsync(
                $"Performance:{iteration}");
        }
        Stopwatch.Stop();
        var l1L2GetTicks = Stopwatch.ElapsedTicks;

        Assert.True(
            l1L2SetTicks / l2SetTicks < 3,
            "L1L2Cache Set cannot perform significantly worse than RedisCache Set.");

        Assert.True(
            l2GetTicks / l1L2GetTicks > 100,
            "L1L2Cache Get must perform significantly better than RedisCache Get.");

        Assert.True(
            l1L2GetPropagationTicks / l2GetTicks < 3,
            "L1L2Cache Get with propagation cannot perform significantly worse than RedisCache Get.");
    }