G
Ganesh
Hi
I have an issue which I am unable to decide on regarding JNI. Would be
glad if someone could help me out.
This is the requirement:
I need to pass around 20 values, all belonging to different logical
sets (for eg., 4 are related to employee details, 3 are related to
salary details etc). which finally belong to a larger logical image
(company information) from the java side to the c++ side for
processing.
I have 2 ways to do this
1. Make objects of all relevant information in the Java side, a Salary
class which will contain all salary details, an Employee class with
all employee information, and store all these in a single object
called CompanyInfo (say). I pass this object to the C++ side, which
a. uses the main object and get all the objects inside such as
salary, employee etc.
b. Calls the get methods of salary object, employee object etc. to
retrieve all the values required for processing.
C. Does processing using the required values.
2. Store _all_ the values required for the operation in a single
array/arraylist and pass it to the C++ side. C++ side retrieves it in
a pre-determined order, gets the values and does the processing.
Now, I am inclined towards 1 since the code will be well-organized,
objectified and easy to maintain. The whole design follows a logical,
constructive pattern. Whereas 2 looks crude, with everything dumped
into 1 array with no logical separation resulting in bad code which is
touhg to understand and maintain.
My problem is that I am worried about the effect on performance if I
choose 1. If 20 values are to be retrieved, then 20 callback
operations (from C++ to JNI) have to be done to call the get methods
and the values have to be got. How costly would this turn out to be?
Will option 2 be drastically cheaper in terms of time taken?
My test programs don't reveal much as there is hardly any load. This
logic will go into a web-app which will be used by thousands of users
concurrently, so could anybody please advise on which would the better
option from a performance viewpoint?
Or is there a different solution to this requirement?
If i take method 1, what about having one get method in each object
which will return an array of all the values stored in it? kinda
midway solution, I thought.
Wud be great if someone cud help me out.
Thanks and Regards
Ganesh
I have an issue which I am unable to decide on regarding JNI. Would be
glad if someone could help me out.
This is the requirement:
I need to pass around 20 values, all belonging to different logical
sets (for eg., 4 are related to employee details, 3 are related to
salary details etc). which finally belong to a larger logical image
(company information) from the java side to the c++ side for
processing.
I have 2 ways to do this
1. Make objects of all relevant information in the Java side, a Salary
class which will contain all salary details, an Employee class with
all employee information, and store all these in a single object
called CompanyInfo (say). I pass this object to the C++ side, which
a. uses the main object and get all the objects inside such as
salary, employee etc.
b. Calls the get methods of salary object, employee object etc. to
retrieve all the values required for processing.
C. Does processing using the required values.
2. Store _all_ the values required for the operation in a single
array/arraylist and pass it to the C++ side. C++ side retrieves it in
a pre-determined order, gets the values and does the processing.
Now, I am inclined towards 1 since the code will be well-organized,
objectified and easy to maintain. The whole design follows a logical,
constructive pattern. Whereas 2 looks crude, with everything dumped
into 1 array with no logical separation resulting in bad code which is
touhg to understand and maintain.
My problem is that I am worried about the effect on performance if I
choose 1. If 20 values are to be retrieved, then 20 callback
operations (from C++ to JNI) have to be done to call the get methods
and the values have to be got. How costly would this turn out to be?
Will option 2 be drastically cheaper in terms of time taken?
My test programs don't reveal much as there is hardly any load. This
logic will go into a web-app which will be used by thousands of users
concurrently, so could anybody please advise on which would the better
option from a performance viewpoint?
Or is there a different solution to this requirement?
If i take method 1, what about having one get method in each object
which will return an array of all the values stored in it? kinda
midway solution, I thought.
Wud be great if someone cud help me out.
Thanks and Regards
Ganesh