最新のBookSleeveライブラリ1.3.38を使用するように Web サービスを更新中です。以前は 1.1.0.7 を使用していました
いくつかのベンチマークを行っているときに、新しいバージョンの BookSleeve を使用して Redis でハッシュを設定すると、古いバージョンより何倍も遅いことに気付きました。次の C# ベンチマーク コードを検討してください。
public void TestRedisHashes()
{
int numItems = 1000; // number of hash items to set in redis
int numFields = 30; // number of fields in each redis hash
RedisConnection redis = new RedisConnection("10.0.0.01", 6379);
redis.Open();
// wait until the connection is open
while (!redis.State.Equals(BookSleeve.RedisConnectionBase.ConnectionState.Open)) { }
Stopwatch timer = new Stopwatch();
timer.Start();
for (int i = 0; i < numItems; i++)
{
string key = "test_" + i.ToString();
for (int j = 0; j < numFields; j++)
{
// set a value for each field in the hash
redis.Hashes.Set(0, key, "field_" + j.ToString(), "testdata");
}
redis.Keys.Expire(0, key, 30); // 30 second ttl
}
timer.Stop();
Console.WriteLine("Elapsed time for hash writes: {0} ms", timer.ElapsedMilliseconds);
}
BookSleeve 1.1.0.7 は 1000 ハッシュを Redis 2.6 に設定するのに約 20 ミリ秒かかりますが、1.3.38 は約 400 ミリ秒かかります。それは20倍遅いです!私がテストした BookSleeve 1.3.38 の他のすべての部分は、古いバージョンと同じか、それよりも高速です。また、Redis 2.4 を使用して同じテストを試み、すべてをトランザクションにラップしました。どちらの場合も、同様のパフォーマンスが得られました。
他の誰かがこのようなことに気づいたことがありますか? 私は何か間違ったことをしているに違いありません... BookSleeve の新しいバージョンを使用してハッシュを正しく設定していますか? これは、ファイア アンド フォーゲット コマンドを実行する正しい方法ですか? ハッシュの使用方法の例として単体テストを調べましたが、別の方法を見つけることができませんでした。この場合、最新バージョンが単に遅い可能性はありますか?