Skip to content

Commit 26f7dc7

Browse files
performance optimize: system data
1 parent 0cc5462 commit 26f7dc7

4 files changed

Lines changed: 21 additions & 46 deletions

File tree

src/main/java/su/interference/core/Instance.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -571,9 +571,9 @@ public Table getFrameDataTable() {
571571

572572
public FrameData getFrameById (long id) {
573573
final Table t = getTableByName("su.interference.persistent.FrameData");
574-
final IndexField ixf = t.getIndexFieldByColumn("frameId");
575-
final IndexList ixl = ixf.getIndex();
576-
final DataChunk dc = (DataChunk)ixl.getObjectByKey(id);
574+
final MapField ixf = t.getMapFieldByColumn("frameId");
575+
final Map ixl = ixf.getMap();
576+
final DataChunk dc = (DataChunk)ixl.get(id);
577577
if (dc != null) {
578578
return (FrameData)dc.getEntity();
579579
}
@@ -582,9 +582,9 @@ public FrameData getFrameById (long id) {
582582

583583
public FrameData getFrameByAllocId (long id) {
584584
final Table t = getTableByName("su.interference.persistent.FrameData");
585-
final IndexField ixf = t.getIndexFieldByColumn("allocId");
586-
final IndexList ixl = ixf.getIndex();
587-
final DataChunk dc = (DataChunk)ixl.getObjectByKey(id);
585+
final MapField ixf = t.getMapFieldByColumn("allocId");
586+
final Map ixl = ixf.getMap();
587+
final DataChunk dc = (DataChunk)ixl.get(id);
588588
if (dc!=null) {
589589
return (FrameData)dc.getEntity();
590590
}
@@ -593,9 +593,9 @@ public FrameData getFrameByAllocId (long id) {
593593

594594
public Chunk getChunkByPointer (long frameId, int ptr) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InternalException, IOException {
595595
final Table t = getTableByName("su.interference.persistent.FrameData");
596-
final IndexField ixf = t.getIndexFieldByColumn("frameId");
597-
final IndexList ixl = ixf.getIndex();
598-
final DataChunk dc = (DataChunk)ixl.getObjectByKey(frameId);
596+
final MapField ixf = t.getMapFieldByColumn("frameId");
597+
final Map ixl = ixf.getMap();
598+
final DataChunk dc = (DataChunk)ixl.get(frameId);
599599
if (dc!=null) {
600600
return ((FrameData)dc.getEntity()).getFrame().data.getByPtr(ptr);
601601
}

src/main/java/su/interference/persistent/FrameData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public class FrameData implements Serializable, Comparable, FrameApi, FilePartit
8888
@MgmtColumn(width=10, show=true, form=false, edit=false)
8989
private volatile long nextFrame;
9090
@Column
91-
@IndexColumn
91+
@MapColumn
9292
@MgmtColumn(width=10, show=true, form=false, edit=false)
9393
private volatile long allocId; //virtual Id field
9494
@Column
@@ -102,7 +102,7 @@ public class FrameData implements Serializable, Comparable, FrameApi, FilePartit
102102
@IndexColumn
103103
private AtomicInteger allocated;
104104
@Id
105-
@IndexColumn
105+
@MapColumn
106106
@Transient
107107
private long frameId; //virtual Id field
108108
@Transient

src/main/java/su/interference/persistent/Table.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,16 +661,16 @@ public Table (DataChunk chunk, IndexList ixl) throws IllegalAccessException, Cla
661661

662662
if (this.name.equals("su.interference.persistent.FrameData")) {
663663
getIndexFieldByColumn("objectId").setIndex(ixl);
664-
final IndexList ixlb = new IndexList();
665-
final IndexList ixla = new IndexList();
664+
final Map<Long, Object> ixlb = new HashMap();
665+
final Map<Long, Object> ixla = new HashMap();
666666
final IndexList ixls = new IndexList();
667667
for (Object o : ixl.getContent()) {
668-
ixlb.add(((FrameData) ((DataChunk) o).getEntity()).getFrameId(), o);
669-
ixla.add(((FrameData) ((DataChunk) o).getEntity()).getAllocId(), o);
668+
ixlb.put(((FrameData) ((DataChunk) o).getEntity()).getFrameId(), o);
669+
ixla.put(((FrameData) ((DataChunk) o).getEntity()).getAllocId(), o);
670670
ixls.add(((FrameData) ((DataChunk) o).getEntity()).getStarted(), o);
671671
}
672-
getIndexFieldByColumn("frameId").setIndex(ixlb);
673-
getIndexFieldByColumn("allocId").setIndex(ixla);
672+
getMapFieldByColumn("frameId").setMap(ixlb);
673+
getMapFieldByColumn("allocId").setMap(ixla);
674674
getIndexFieldByColumn("started").setIndex(ixls);
675675
} else if (this.name.equals("su.interference.persistent.UndoChunk")) {
676676
//none

src/main/java/su/interference/persistent/TransFrame.java

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,11 @@ this software and associated documentation files (the "Software"), to deal in
2424

2525
package su.interference.persistent;
2626

27-
import su.interference.core.DisableSync;
28-
import su.interference.core.SystemEntity;
29-
import su.interference.core.DataChunk;
30-
import su.interference.core.IndexColumn;
27+
import su.interference.core.*;
3128
import su.interference.mgmt.MgmtColumn;
3229
import su.interference.exception.InternalException;
3330

34-
import javax.persistence.Entity;
35-
import javax.persistence.Column;
36-
import javax.persistence.Id;
37-
import javax.persistence.Transient;
31+
import javax.persistence.*;
3832
import java.io.Serializable;
3933
import java.lang.reflect.Modifier;
4034
import java.net.MalformedURLException;
@@ -68,7 +62,7 @@ public class TransFrame implements Comparable, FilePartitioned, Serializable {
6862
@MgmtColumn(width=10, show=true, form=false, edit=false)
6963
private int diff;
7064
@Id
71-
@IndexColumn
65+
@MapColumn
7266
@MgmtColumn(width=10, show=true, form=false, edit=false)
7367
@Transient
7468
private transient String frameId;
@@ -83,7 +77,7 @@ public static int getCLASS_ID() {
8377
}
8478

8579
public String getFrameId() {
86-
return getHexByLong(transId)+getHexByLong(cframeId)+getHexByLong(uframeId);
80+
return transId + "-" + cframeId + "-" + uframeId;
8781
}
8882

8983
public TransFrame() {
@@ -170,23 +164,4 @@ public void setDiff(int diff) {
170164
this.diff = diff;
171165
}
172166

173-
public String getHexByInt (int val) {
174-
String s = Integer.toHexString(val);
175-
String p = new String();
176-
for (int i=0; i < 8-s.length(); i++) {
177-
p = p + "0";
178-
}
179-
return p + s;
180-
}
181-
182-
public String getHexByLong (long val) {
183-
String s = Long.toHexString(val);
184-
String p = new String();
185-
for (int i=0; i < 16-s.length(); i++) {
186-
p = p + "0";
187-
}
188-
return p + s;
189-
}
190-
191-
192167
}

0 commit comments

Comments
 (0)