Hi Ciaran, I think this is definitely something that would be of benefit, as you're right, if you've architected your app correctly most SETs can be asynchronous. I'd argue for a BeginStore / EndStore standard pattern though like in the rest of the BCL.
Cheers, Kieran From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ciaran Sent: 16 January 2008 11:41 To: [email protected] Subject: Re: Enyim.Memcached and asynchronous sets On Jan 16, 2008 9:45 AM, Ciaran <[EMAIL PROTECTED]> wrote: HI, Am I better modifying the Enyim.Memcached client to support an Async Set [clearly a workqueue around the normal set command] (and provide you with another patch), or just wrap the existing client in my own facade to provide this functionality, i.e. what would 'a' (Enyim) prefer. On the off-chance that someone's interested, the following code : IList<IEndPoint> servers = new List<IEndPoint>(); servers.Add(new Enyim.Caching.Configuration.Code.EndPoint("127.0.0.1", 11211)); MemCachedClientConfiguration configuration = new MemCachedClientConfiguration(servers); MemcachedClient client = new MemcachedClient(configuration); DateTime before = DateTime.Now; for (int i = 0; i < 10000; i++) { Guid guid = Guid.NewGuid(); client.Store(StoreMode.Set, guid.ToString(), guid); } DateTime after= DateTime.Now; Console.Out.WriteLine(String.Format("Took {0}ms to do 10000 stores", ((TimeSpan)(after-before)).TotalMilliseconds)); DateTime beforeAsync = DateTime.Now; for (int i = 0; i < 10000; i++) { Guid guid = Guid.NewGuid(); client.StoreAsync(StoreMode.Set, guid.ToString(), guid); } after = DateTime.Now; Console.Out.WriteLine(String.Format("Took {0}ms to do 10000 stores", ((TimeSpan)(after - beforeAsync)).TotalMilliseconds)); Prints the following timings: Took 1734.3861ms to do 10000 stores Took 62.5004ms to do 10000 stores (Interestingly the *actual* time to do the 10000 stores asynchronously, came out at about 1200ms, because many stores occurred in parallel fwiw) Thanks - Ciaran -- - Ciaran
