Skip to Content.
Sympa Menu

grouper-users - [grouper-users] speeding up the command line grouper client by an order of magnitude

Subject: Grouper Users - Open Discussion List

List archive

[grouper-users] speeding up the command line grouper client by an order of magnitude


Chronological Thread 
  • From: Chris Hyzer <>
  • To: "" <>
  • Subject: [grouper-users] speeding up the command line grouper client by an order of magnitude
  • Date: Thu, 1 Nov 2012 17:04:24 +0000
  • Accept-language: en-US

I haven’t run this in production or done too much testing, but the nailgun freeware seems like an easy way to drastically speed up java command line programs.   The grouper client can become 10 times faster (see results below) if that is the JVM startup time for a command line call.  Also note that the CPU time of the machine running the client is drastically reduced.

 

http://www.martiansoftware.com/nailgun/

 

Basically it is a jar that runs a TCP server (you should run this on 127.0.0.1), and runs main methods for you via a C client.  Here is an example.

 

######################

Start the server:

 

[mchyzer@flash nailgun-0.7.1]$ java -cp .:grouperClient.jar:nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer 127.0.0.1

NGServer started on 127.0.0.1, port 2113.

 

#######################

Compile the client:

 

[mchyzer@flash nailgun-0.7.1]$ make

Building ng client.  To build a Windows binary, type 'make ng.exe'

gcc -Wall -pedantic -s -O3 -o ng src/c/ng.c

[mchyzer@flash nailgun-0.7.1]$

 

#######################

Here is a grouper client call which takes 1.2 seconds

 

[mchyzer@flash nailgun-0.7.1]$ time java -jar grouperClient.jar --operation=hasMemberWs --groupName=test:testGroup --subjectIdentifiers=ajames

Index 0: success: T: code: IS_MEMBER: 12345678: true

 

real    0m1.161s

user    0m1.432s

sys     0m0.080s

 

########################

Here is the same call over nailgun which takes 120ms

 

[mchyzer@flash nailgun-0.7.1]$ time ./ng edu.internet2.middleware.grouperClient.GrouperClient --operation=hasMemberWs --groupName=test:testGroup --subjectIdentifiers=jsmith

Index 0: success: T: code: IS_MEMBER: 12345678: true

 

real    0m0.121s

user    0m0.000s

sys     0m0.001s

[mchyzer@flash nailgun-0.7.1]$

 

Let me know if anyone uses this and how it goes J

 

Thanks,

Chris




Archive powered by MHonArc 2.6.16.

Top of Page