TreeMap extra get operation removed.

Motivation:
Checking if a key exists on a TreeMap has a Big O of "log 2 N",
doing it twice is not cheap.

Modifications:
Get the key instead which has the same cost and check if it is null.

Result:
Faster code due to one expensive operation removed.
This commit is contained in:
Guido Medina 2016-04-22 09:34:56 +01:00 committed by Scott Mitchell
parent 946d033379
commit 5b59250657

View File

@ -36,18 +36,13 @@ public class DefaultSpdySettingsFrame implements SpdySettingsFrame {
@Override
public boolean isSet(int id) {
Integer key = Integer.valueOf(id);
return settingsMap.containsKey(key);
return settingsMap.containsKey(id);
}
@Override
public int getValue(int id) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
return settingsMap.get(key).getValue();
} else {
return -1;
}
final Setting setting = settingsMap.get(id);
return setting != null ? setting.getValue() : -1;
}
@Override
@ -60,9 +55,9 @@ public class DefaultSpdySettingsFrame implements SpdySettingsFrame {
if (id < 0 || id > SpdyCodecUtil.SPDY_SETTINGS_MAX_ID) {
throw new IllegalArgumentException("Setting ID is not valid: " + id);
}
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
Setting setting = settingsMap.get(key);
final Integer key = Integer.valueOf(id);
final Setting setting = settingsMap.get(key);
if (setting != null) {
setting.setValue(value);
setting.setPersist(persistValue);
setting.setPersisted(persisted);
@ -74,47 +69,36 @@ public class DefaultSpdySettingsFrame implements SpdySettingsFrame {
@Override
public SpdySettingsFrame removeValue(int id) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
settingsMap.remove(key);
}
settingsMap.remove(id);
return this;
}
@Override
public boolean isPersistValue(int id) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
return settingsMap.get(key).isPersist();
} else {
return false;
}
final Setting setting = settingsMap.get(id);
return setting != null && setting.isPersist();
}
@Override
public SpdySettingsFrame setPersistValue(int id, boolean persistValue) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
settingsMap.get(key).setPersist(persistValue);
final Setting setting = settingsMap.get(id);
if (setting != null) {
setting.setPersist(persistValue);
}
return this;
}
@Override
public boolean isPersisted(int id) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
return settingsMap.get(key).isPersisted();
} else {
return false;
}
final Setting setting = settingsMap.get(id);
return setting != null && setting.isPersisted();
}
@Override
public SpdySettingsFrame setPersisted(int id, boolean persisted) {
Integer key = Integer.valueOf(id);
if (settingsMap.containsKey(key)) {
settingsMap.get(key).setPersisted(persisted);
final Setting setting = settingsMap.get(id);
if (setting != null) {
setting.setPersisted(persisted);
}
return this;
}