There are several common optimization techniques that apply regardless
of the language being used. Some of these techniques,
such as global register allocation, are
sophisticated strategies to allocate machine resources (for example, CPU
registers)
and don't apply to Java bytecodes. We'll
focus on the techniques that basically involve restructuring code and
substituting
equivalent operations within a method.
EntrySet vs KeySet
-----------------------------------------
More efficient:
for (Map.Entry entry : map.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
}
than:
for (Object key : map.keySet()) {
Object value = map.get(key);
}
Avoid to create threads without run methods
------------------------------------
Usage Example:
public class Test
{
public void method() throws Exception
{
new Thread().start(); //VIOLATION
}
}
Should be written as:
public class Test
{
public void method(Runnable r) throws Exception
{
new Thread(r).start(); //FIXED
}
}
Initialise the ArrayList if you know in advance the size
--------------------------------------------
For example, use this code if you expect your ArrayList to store around 1000 objects:
List str = new ArrayList(1000)
Use ternary operators
----------------------------------------
class Use_ternary_operator_correction
{
public boolean test(String value)
{
if(value.equals("AppPerfect")) // VIOLATION
{
return true;
}
else
{
return false;
}
}
}
Should be written as:
class Use_ternary_operator_correction
{
public boolean test(String value)
{
return value.equals("AppPerfect"); // CORRECTION
}
}
Always declare constant fields Static
public class Always_declare_constant_field_static_violation
{
final int MAX = 1000; // VIOLATION
final String NAME = "Noname"; // VIOLATION
}
Should be written as:
public class Always_declare_constant_field_static_correction
{
static final int MAX = 1000; // CORRECTION
static final String NAME = "Noname"; // VIOLATION
}
No comments:
Post a Comment