Hello<div><br></div><div>A year ago I was in the same situation, but using Java.</div><div><br></div><div>The found the problem was not about OSRM server but connection overhead in my own program. Creating a new http connection for each request was simply not an option: i could manage to get about 20 request at max. I tried to use external todos like wget and curl, but that didn't worked at all.</div><div><br></div><div>The solution in my case was to use apache httpclient library in concurrent mode, with resources for about 12 concurrent conections in 8 concurrent threads. </div><div><br></div><div>With that configuration I managed to pass from as much as 20 request per second to more than 900 request per second.... At that speed, OSRM was using about 100% CPU time, so it worked full speed... :)</div><div><br></div><div>Maybe this could help you... If you need code let me know</div><div><br></div><div>Kind regards<br><br>El viernes, 7 de noviembre de 2014, Stephen Woodbridge <<a href="mailto:woodbri@swoodbridge.com">woodbri@swoodbridge.com</a>> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'll answer a bunch of the reply's here:<br>
<br>
1. we do pre-compute a distance matrix and use that already but if you have a situation like:<br>
<br>
o----------t----------u-------<u></u>-v-----><br>
           |          |        |<br>
           B          C        |<br>
           |          |        |<br>
A----------x----------y-------<u></u>-z---D----><br>
<br>
and you want the route A-B-C-D if you use a precomputed distance matrix you get a path A-x-B-x-y-C-y-z-D (depending on where B and C are in those segments (ie: the vehicle makes a u-turn at B and C) when we want a route like A-x-B-t-u-C-y-z-D. OSRM will generate the later route if you ask for the route A,B,C,D with via points. So a simple distance matrix does not work well.<br>
<br>
2. The performance issue is not with the C++, we get basically the same performance using Perl (GET) or curl at the command line, or curl from C or from c++.<br>
<br>
3. I will look at the node-osrm code. I remember seeing that posted, but had forgotten. Thanks for the reminder of that.<br>
<br>
4. I am some what stuck on an older version of the source code because I'm not in a position to upgrade my server OS and packages. :( So this is somewhat problematic for me at the moment.<br>
<br>
Anyway, lots of great ideas. I appreciate them all and will be digging into them over the weekend.<br>
<br>
Best regards,<br>
  -Steve<br>
<br>
On 11/7/2014 12:46 PM, John Firebaugh wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Steve,<br>
<br>
Recent versions of osrm-backend build a library which you can link<br>
against. See <a href="https://github.com/Project-OSRM/node-osrm/" target="_blank">https://github.com/Project-<u></u>OSRM/node-osrm/</a> for an example.<br>
<br>
cheers,<br>
John<br>
<br>
On Fri, Nov 7, 2014 at 7:13 AM, Stephen Woodbridge<br>
<<a>woodbri@swoodbridge.com</a> <mailto:<a>woodbri@swoodbridge.com</a>>> wrote:<br>
<br>
    Hi,<br>
<br>
    I seem to remember a while back that there was a discussion about<br>
    the possibility to embed the OSRM routing engine at the code level<br>
    rather than doing HTTP requests to a server.<br>
<br>
    I now find myself in a position that this would be desirable to do.<br>
    I have a small coverage area like a city, but I'm getting killed by<br>
    the overhead of formatting requests as strings, making a socket<br>
    connection to osrm-routed, parsing the responses, etc. Making local<br>
    requests my server this is taking 4-500 ms per request.<br>
<br>
    Basically, I'm doing viaroute requests with 2-100 via points. 99% of<br>
    the time all I need to know is the travel time.<br>
<br>
    Since I'm developing in C++, I thought it might be easy and much<br>
    faster to instantiate the routing engine and then have a simple<br>
    interface where I can pass a container of points and get back the<br>
    travel time for that route and/or the path coordinates. But I could<br>
    live without the coordinates if I had to.<br>
<br>
    Has anyone done this already? Can you share?<br>
<br>
    I have started digging through the source to see if I can do this,<br>
    but working my way in from osrm-routed or Tools/simpleclient.cpp the<br>
    code is very entangled with all the http request/response stuff that<br>
    I would ideally like to avoid. So far the most promising path looks<br>
    like using some variant of the simpleclient, but its not obvious if<br>
    or how to untangle all the json stuff and simply return a struct or<br>
    class to the caller without that. I spent most of yesterday, digging<br>
    through this and made a lot of progress just understanding<br>
    simpleclient and getting ti to compile and work and get it to actual<br>
    return results using a shared memory connection.<br>
<br>
    A little help in this direction would be appreciated.<br>
<br>
    Thanks,<br>
       -Steve<br>
<br>
    ______________________________<u></u>___________________<br>
    OSRM-talk mailing list<br>
    <a>OSRM-talk@openstreetmap.org</a> <mailto:<a>OSRM-talk@openstreetmap.org</a>><br>
    <a href="https://lists.openstreetmap." target="_blank">https://lists.openstreetmap.</a>__<u></u>org/listinfo/osrm-talk<br>
    <<a href="https://lists.openstreetmap.org/listinfo/osrm-talk" target="_blank">https://lists.openstreetmap.<u></u>org/listinfo/osrm-talk</a>><br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
OSRM-talk mailing list<br>
<a>OSRM-talk@openstreetmap.org</a><br>
<a href="https://lists.openstreetmap.org/listinfo/osrm-talk" target="_blank">https://lists.openstreetmap.<u></u>org/listinfo/osrm-talk</a><br>
<br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
OSRM-talk mailing list<br>
<a>OSRM-talk@openstreetmap.org</a><br>
<a href="https://lists.openstreetmap.org/listinfo/osrm-talk" target="_blank">https://lists.openstreetmap.<u></u>org/listinfo/osrm-talk</a><br>
</blockquote></div><br><br>-- <br><div dir="ltr"><br><div><img src="https://lh6.googleusercontent.com/-LFMGn-SvTA4/UkU6gnDa61I/AAAAAAAAdvs/0eAa_-89WUg/s64-no/antonio.jpg" style="float:left"><img src="https://lh6.googleusercontent.com/-wnUpOBO22_s/UkU6gpZXwdI/AAAAAAAAdvo/-P5ETLWNBpc/w55-h64-no/uah.gif" style="float:left">Antonio Moratilla Ocaña - <a href="mailto:antonio.moratilla@uah.es" target="_blank">antonio.moratilla@uah.es</a> - Despacho N334<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div></div></blockquote>Profesor del Dpto. Ciencias de la Computación - <a href="http://www.cc.uah.es" target="_blank">http://www.cc.uah.es</a><br>Escuela Politécnica - Informática - <a href="http://www.etsii.uah.es" target="_blank">http://www.etsii.uah.es</a><div>Universidad de Alcalá - <a href="http://www.uah.es" target="_blank">http://www.uah.es</a></div></div></div><br>