sure.. no problem at all
the code is
https://github.com/darthShana/grpc-demo

ive added a README

On Thursday, 18 May 2017 04:14:06 UTC+12, Makarand Dharmapurikar wrote:
>
> Hi Darshana - Would you be open to publish your results and methodology, 
> perhaps as a simple README, so others can benefit from your investigation ? 
>
> On Tue, May 16, 2017 at 10:06 AM, Dharshana Ratnayake <darth...@gmail.com 
> <javascript:>> wrote:
>
>> Thanks Ray..
>>
>> That was it.. Added the warm up and now gRPC is consistently faster...
>>
>> Thanks for your help!! 
>>
>>
>> On Tuesday, 16 May 2017 22:40:01 UTC+12, Ray Tsang wrote:
>>>
>>> I suspect it's the gRPC startup time. Would you be able to test in the 
>>> following way, such as making the warm up requests first, and then 
>>> benchmark the subsequent requests post-warmup.
>>>
>>> There is also a benchmark that you can run / replicate here: 
>>> https://github.com/david-cao/gRPCBenchmarks
>>>
>>> Cheers,
>>>
>>> On Tuesday, May 16, 2017 at 10:24:36 AM UTC+2, Dharshana Ratnayake wrote:
>>>>
>>>> hmm sure memory allocation could be different.. but i suspect it could 
>>>> be something todo with
>>>> PoolingHttpClientConnectionManager
>>>> that im using in the REST scenario.. 
>>>>
>>>> On Tuesday, 16 May 2017 06:57:11 UTC+12, Dharshana Ratnayake wrote:
>>>>>
>>>>>
>>>>> Hi guys..
>>>>>
>>>>> Ive very recently discovered the world of gRPC and im super 
>>>>> enthusiastic about how i can use it.. Just so i can understand the 
>>>>> potential benefits. i set up the following benchmark test..
>>>>>
>>>>> track 1: JSON over http1 using a spring boot app running on a google 
>>>>> compute engine.
>>>>>
>>>>> public static void main(String[] args){
>>>>>     HttpClient httpClient = HttpClientBuilder.create().build();
>>>>>
>>>>>     ObjectMapper mapper = new ObjectMapper();
>>>>>
>>>>>     try {
>>>>>         long startTime = System.currentTimeMillis();
>>>>>         for(int i=0;i<1000;i++) {
>>>>>             MessageRequest value = new MessageRequest(new 
>>>>> CharacterMessage(UUID.randomUUID(), new Vector(10, 20, 30)));
>>>>>
>>>>>             HttpPost request = new HttpPost("http://[google compute 
>>>>> engine ip]:8080/character");
>>>>>             StringEntity params = new 
>>>>> StringEntity(mapper.writeValueAsString(value));
>>>>>             request.addHeader("content-type", "application/json");
>>>>>             request.addHeader("Accept", "application/json");
>>>>>
>>>>>             request.setEntity(params);
>>>>>             HttpResponse response = httpClient.execute(request);
>>>>>             BufferedReader br = new BufferedReader(new 
>>>>> InputStreamReader((response.getEntity().getContent())));
>>>>>
>>>>>             String output;
>>>>>             StringBuilder sb = new StringBuilder();
>>>>>             while ((output = br.readLine()) != null) {
>>>>>                 sb.append(output);
>>>>>             }
>>>>>             MessageResponse mr = mapper.readValue(sb.toString(), 
>>>>> MessageResponse.class);
>>>>>             System.out.println("Output from Server .... \n");
>>>>>             System.out.println(mr.getCharacterMessage().getPossition());
>>>>>         }
>>>>>
>>>>>         System.out.println("all 
>>>>> done!!:"+(System.currentTimeMillis()-startTime));
>>>>>     }catch (Exception ex) {
>>>>>         ex.printStackTrace();
>>>>>     }
>>>>>
>>>>>
>>>>>   track 2: proto buffer over http2 using grpc server running on google 
>>>>> compute engine
>>>>>
>>>>> public static void main(String[] args){
>>>>>     ManagedChannel channel = ManagedChannelBuilder
>>>>>             .forAddress("[googgle compute engine ip]", 8080)
>>>>>             .usePlaintext(true)
>>>>>             .build();
>>>>>
>>>>>     CharacterServiceGrpc.CharacterServiceBlockingStub stub = 
>>>>> CharacterServiceGrpc.newBlockingStub(channel);
>>>>>     long startTime = System.currentTimeMillis();
>>>>>
>>>>>     for(int i=0;i<1000;i++) {
>>>>>         MessageResponse response = stub.updateCharacter(
>>>>>                 MessageRequest.newBuilder()
>>>>>                         .setCharacterMessage(
>>>>>                                 CharacterMessage.newBuilder()
>>>>>                                         
>>>>> .setId(ByteString.copyFrom(asBytes(UUID.randomUUID())))
>>>>>                                         .setPosstion(Vector.newBuilder()
>>>>>                                                 
>>>>> .setX(10).setY(20).setZ(30).build())
>>>>>                                         .build())
>>>>>                         .build());
>>>>>
>>>>>         System.out.println("response:" + 
>>>>> response.getCharacterMessage().getPosstion());
>>>>>     }
>>>>>
>>>>>     System.out.println("finished message 
>>>>> transfer:"+(System.currentTimeMillis()-startTime));
>>>>> }
>>>>>
>>>>> public static byte[] asBytes(UUID uuid) {
>>>>>     ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
>>>>>     bb.putLong(uuid.getMostSignificantBits());
>>>>>     bb.putLong(uuid.getLeastSignificantBits());
>>>>>     return bb.array();
>>>>> }
>>>>>
>>>>>
>>>>> So i ran both cases (each does a 1000) request from my place in New 
>>>>> Zealand to us-west. I was obviously expecting the gRPC to do better.. But 
>>>>> to my surprise (and disappointment) it didn't.. The JSON/HTTP1 completed 
>>>>> in 
>>>>> 349270 milliseconds but the gRPC scenario took 364541 milliseconds to 
>>>>> finish..
>>>>> Can anyone explain what might be going on here?
>>>>> I would have thought because http being binary more easy to parse and 
>>>>> being more compact that it would do better than REST.. Maybe spring-boot 
>>>>> is 
>>>>> doing something clever? I do know that on a case like this you would use 
>>>>> a 
>>>>> stream and that finishes in 1974 milliseconds.. But i would have through 
>>>>> that just call to call gRPC would do faster as well.
>>>>>
>>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "grpc.io" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to grpc-io+u...@googlegroups.com <javascript:>.
>> To post to this group, send email to grp...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/grpc-io.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/grpc-io/48dfb1d2-4845-4d74-afd2-83a30d9e233e%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/48dfb1d2-4845-4d74-afd2-83a30d9e233e%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To post to this group, send email to grpc-io@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/c3ce2271-3c0f-4a72-b364-821144b1e150%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to