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 

Reply via email to