Take a look at http://aspzone.com/blogs/john/articles/521.aspx.

 

That seems to be the simplest way to implement just using a delegate and
letting the framework do the heavy lifting J

 

From: Ciaran [mailto:[EMAIL PROTECTED] 
Sent: 16 January 2008 12:07
To: Kieran Benton
Cc: [email protected]
Subject: Re: Enyim.Memcached and asynchronous sets

 

 

On Jan 16, 2008 11:50 AM, Kieran Benton <[EMAIL PROTECTED]>
wrote:

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.

As I understand it, this is simply a naming convention and adding a
parameter that implements IAsyncResult (and then using it correctly? )
Is this correct ? 
- ciaran 

         

        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 




-- 
- Ciaran 

Reply via email to