1745111427
2025-04-09 09:23:00
最近の顧客エンゲージメントでは、メモリの使用量が異常に高い顧客を調べました。他の発見の中でも、私はそれほどよく知られていなかったと思います。しかし、彼らが言うように、小さな詳細は大きな違いを生むことができます。そして、今日の投稿のその小さな詳細はキャッシュキーです。
テストしましょう。これは、私がCopholdを足場に求めたものであり、それからいくつかの小さな調整を求めたものです。テストは、10.000アイテムをキャッシュに追加し、各エントリを10回読み取ることです。非常に短いプレフィックスを使用した1つのテスト、もう1つは長い(ただし、それほど長くはありません)。
using System;
using System.Runtime.Caching;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
namespace MemoryCacheBenchmarkDemo
{
// Use MemoryDiagnoser to capture memory allocation metrics during benchmarking.
[MemoryDiagnoser]
public class MemoryCacheBenchmark
{
private const int Iterations = 10_000;
private const int ReadIterations = 10;
[Benchmark(Description = "MemoryCache with Short Keys")]
public void ShortKeysBenchmark()
{
using (var cache = new MemoryCache("ShortKeysCache"))
{
const string Prefix = "K";
// Insertion phase using short keys (e.g., "K0", "K1", ...)
for (int i = 0; i ();
}
}
}
そして違い。短いキーが速くなるだけでなく、割り当てがかなり少なくなります(したがって、ゴミコレクション)
キャッシュキーの唯一の要件は、それが一意であることです。メモリダンプを調べなければならない場合は、それをコーディングすることは理にかなっているかもしれません(私はあなたが決していないことを望みます 持っている に、しかし、それは痛みを伴い、楽しい経験です) – あなたはこれがこれとは何かを知っています。たとえば、Commerceには、注文キャッシュキー用のこのプレフィックスがあります。
EP:EC:OS:
そしてそれだけです。 EPはEpiserver(私たちが私たちであることを知っている)の場合は短い手で、ECはeコマース用で、OSは注文システム用です。 (私は知っています、それは歴史的な理由で非常に長い間そうでした、そして誰もそれを変えることを悩ませません)
次回クラスにキャッシュを追加するときは、可能な限り最短のキャッシュキーを使用してください。それはミクロの最適化ではありません。あなたがそれがより良いことを知っているなら、なぜですか?
#キャッシュキーを短くしてください