Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to design extremely efficient function

I am designing a function (Java method) which will be executed 40-80 times per second on a mobile device.

I want to avoid producing a ton of dead variables which get collected by GC, as the function runs (possibly throughout the life of the app).

In C I might use volatile for example, to prevent the memory allocation of my variables in each execution of the function... I want to do something similar in Java but don't know how.

The function stores data in

  • 1 string
  • 4 integers
  • 2 1-dimensional String arrays

In general, in Java, what is the preferred method for using the above variables but not re-allocating them every time my function is executed (40+ times per second)?

Member variables would "work" but is this the best solution?

Thanks! Brad

like image 689
Brad Hein Avatar asked Oct 12 '10 15:10

Brad Hein


2 Answers

  • Wrap those fields in a class {Java loves to see the Object} and allocate it once and use it.
  • keep string pool concept in mind as you have String array
like image 61
jmj Avatar answered Oct 04 '22 05:10

jmj


Static member vars, they won't get unloaded until the class is unloaded. Keep in mind that if all references to the class are lost it is possible that it can be GC'ed. I doubt that will be an issue in your case however it is worth noting. In addition if you are creating new instances of the class containing the static members vars you will be in the same boat from an allocation stance.

like image 23
Aaron McIver Avatar answered Oct 04 '22 05:10

Aaron McIver