Hi Avi,

Thanks much for putting those benchmarks together!

Even though we know (by design as an intermediary step [1]) that Restlet 
internal/built-in HTTP connector (client and server) are slower in 2.0 than in 
1.1, this shouldn't be the case for other connectors (Jetty, Net, Apache HTTP 
Client, etc.) even though Apache HTTP Client 4 which have difference 
performances compared to version 3 (ideally better). Which connector is running 
on the server-side for your tests?

Otherwise, I'm working intensely right now on the new built-in HTTP connector 
for version 2.1 that leverages the new asynchronous design introduced in 2.0 
but also fully leverages non-blocking NIO to obtain excellent latency and 
scalability results (from our initial tests), decoupling the number of calls 
from the number of threads, allowing long running calls to not block the 
processing thread, etc.

If you have time to grab the latest 2.1 snapshot and run your benchmarks again 
to compare, that would be very useful! 

Best regards,
Jerome
--
Restlet ~ Founder and Technical Lead ~ http://www.restlet.o​rg
Noelios Technologies ~ http://www.noelios.com



[1] http://wiki.restlet.org/developers/172-restlet/354-restlet.html

-----Message d'origine-----
De : Avi Flax [mailto:[email protected]] 
Envoyé : jeudi 20 janvier 2011 06:31
À : [email protected]
Cc : Michael Rehse
Objet : Possible client performance regression in 2.0 compared to 1.1

Hi all, a coworker and I have been debugging an app which is having performance 
issues.

This is an app which depends heavily on sending HTTP requests quickly.
In production it generally sends thousands of requests per hour.

We have a new version of the app ready, but have seen a notable performance 
disparity in the new version compared to the older version.

After some digging, it seems that the disparity is related to the newer version 
having upgraded from Restlet 1.1 to 2.0.

I created some tests to try to isolated the issue.

My scripts are here: https://gist.github.com/787409

The server is a fixed configuration, so we can measure various client 
configurations.

I ran the client script 5 times for each scenario:

Restlet 1.1.10, HttpClient 3.1
Restlet 2.0.4, HttpClient 4.0
Restlet 1.1.10, Net
Restlet 2.0.4, Net

and the results seem pretty clear:

HttpClient         Run 1      Run 2      Run 3      Run 4      Run 5
Restlet 1.1.10     7.067      6.584      6.465      6.329      6.326
Restlet 2.0.4      9.231      8.030      7.877      7.783      7.828

Net                Run 1      Run 2      Run 3      Run 4      Run 5
Restlet 1.1.10     6.268      6.078      6.073      6.228      6.427
Restlet 2.0.4      7.636      7.530      7.832      7.583      7.575

I’ve also attached some charts which help interpret the data.

So, Restlet 2.0.4’s client functionality *seems* to be slower than
1.1.10 — around 20% slower (although I’m terrible at math).

I’d love some help here. Am I missing something? Is my testing methodology 
and/or interpretation reasonable? Any suggestions on how I can dig into the 
framework and try to identify the cause of the slowdown?

Thanks,
Avi

Avi Flax » Partner » Arc90 » http://arc90.com
Kindling: Innovation through Collaboration » http://kindlingapp.com

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2699209

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2699241

Reply via email to