Merge branch 'master' into feature/analytics

This commit is contained in:
Per Minborg
2020-11-30 13:01:54 +01:00
4 changed files with 790 additions and 3 deletions
+1
View File
@@ -7,6 +7,7 @@ image::docs\images\Map_line.png[width=20%]
[#image-maven]
[caption="", link=https://maven-badges.herokuapp.com/maven-central/net.openhft/chronicle-map]
image::https://maven-badges.herokuapp.com/maven-central/net.openhft/chronicle-map/badge.svg[]
image:https://javadoc.io/badge2/net.openhft/chronicle-map/javadoc.svg[link="https://www.javadoc.io/doc/net.openhft/chronicle-map/latest/index.html"]
== Overview
+2 -1
View File
@@ -39,7 +39,7 @@
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.12</version>
<version>1.4.14</version>
</dependency>
<dependency>
@@ -282,6 +282,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
<forkMode>once</forkMode>
@@ -71,8 +71,8 @@ public class MapJLBHTest implements JLBHTask {
byteable.bytesStore(NativeBytesStore.nativeStore(capacity), 0, capacity);
try {
write = ChronicleMapBuilder.of(Long.class, IFacade.class).constantValueSizeBySample(datum).entries(1_100_000).createOrRecoverPersistedTo(mapFile);
read = ChronicleMapBuilder.of(Long.class, IFacade.class).constantValueSizeBySample(datum).entries(1_100_000).createOrRecoverPersistedTo(mapFile);
write = ChronicleMapBuilder.of(Long.class, IFacade.class).constantValueSizeBySample(datum).entries(1_100_000).createPersistedTo(mapFile);
read = ChronicleMapBuilder.of(Long.class, IFacade.class).constantValueSizeBySample(datum).entries(1_100_000).createPersistedTo(mapFile);
} catch (IOException ex) {
throw Jvm.rethrow(ex);
}
@@ -0,0 +1,785 @@
/*
* Copyright 2014-2020 chronicle.software
*
* http://chronicle.software
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.openhft.chronicle.map.perf;
import net.openhft.chronicle.bytes.Byteable;
import net.openhft.chronicle.bytes.NativeBytesStore;
import net.openhft.chronicle.core.Jvm;
import net.openhft.chronicle.core.io.IOTools;
import net.openhft.chronicle.core.jlbh.JLBH;
import net.openhft.chronicle.core.jlbh.JLBHOptions;
import net.openhft.chronicle.core.jlbh.JLBHTask;
import net.openhft.chronicle.core.util.NanoSampler;
import net.openhft.chronicle.map.ChronicleMap;
import net.openhft.chronicle.map.ChronicleMapBuilder;
import net.openhft.chronicle.values.Array;
import net.openhft.chronicle.values.MaxUtf8Length;
import net.openhft.chronicle.values.Values;
import java.io.File;
import java.io.IOException;
public class NonPersistedMapJLBHTest implements JLBHTask {
private static final int WARM_UP_ITERATIONS = 40_000;
private ChronicleMap<Long, IFacade> read;
private ChronicleMap<Long, IFacade> write;
private NanoSampler readSampler;
private NanoSampler writeSampler;
private NanoSampler e2eSampler;
private File mapFile = new File("perfmap/map.cm3");
private long counter = -WARM_UP_ITERATIONS;
private IFacade datum = Values.newNativeReference(IFacade.class);
public static void main(String[] args) {
//Create the JLBH options you require for the benchmark
JLBHOptions options = new JLBHOptions()
.warmUpIterations(WARM_UP_ITERATIONS)
.iterations(500_000)
.throughput(40_000)
.runs(3)
.recordOSJitter(false)
.accountForCoordinatedOmmission(false)
.jlbhTask(new NonPersistedMapJLBHTest());
new JLBH(options).start();
}
@Override
public void init(JLBH jlbh) {
IOTools.deleteDirWithFiles("perfmap", 10);
mapFile.getParentFile().mkdirs();
readSampler = jlbh.addProbe("Read");
writeSampler = jlbh.addProbe("Write");
e2eSampler = jlbh;
Byteable byteable = (Byteable) datum;
long capacity = byteable.maxSize();
byteable.bytesStore(NativeBytesStore.nativeStore(capacity), 0, capacity);
write = read = ChronicleMapBuilder.of(Long.class, IFacade.class).constantValueSizeBySample(datum).entries(1_100_000).create();
}
@Override
public void run(long startTimeNS) {
long runNo = counter++;
datum.setValue10(startTimeNS);
long startWrite = System.nanoTime();
write.put(runNo, datum);
long endWrite = System.nanoTime();
long writeTime = endWrite - startWrite;
writeSampler.sampleNanos(writeTime);
IFacade dataRead = read.getUsing(runNo - 1, datum);
long nanos = System.nanoTime();
if (dataRead != null) {
readSampler.sampleNanos(nanos - endWrite);
}
e2eSampler.sampleNanos(nanos - startTimeNS);
}
@Override
public void warmedUp() {
counter = 0;
}
@Override
public void complete() {
write.close();
read.close();
}
//IFacade (at the bottom) is the façade we need tested
interface IFacadeBase {
short getValue0();
void setValue0(short value);
byte getValue1();
void setValue1(byte value);
byte getValue2();
void setValue2(byte value);
int getValue3();
void setValue3(int value);
short getValue4();
void setValue4(short value);
boolean getValue5();
void setValue5(boolean value);
boolean getValue6();
void setValue6(boolean value);
short getValue7();
void setValue7(short value);
short getValue8();
void setValue8(short value);
long getValue9();
void setValue9(long value);
long getValue10();
void setValue10(long value);
long getValue11();
void setValue11(long value);
long getValue12();
void setValue12(long value);
long getValue13();
void setValue13(long value);
long getValue14();
void setValue14(long value);
long getValue15();
void setValue15(long value);
short getValue16();
void setValue16(short value);
short getValue17();
void setValue17(short value);
short getValue18();
void setValue18(short value);
}
interface IFacadeSon extends IFacadeBase {
long getValue19();
void setValue19(long value);
int getValue20();
void setValue20(int value);
int getValue21();
void setValue21(int value);
double getValue22();
void setValue22(double value);
String getValue23();
void setValue23(@MaxUtf8Length(10) String value);
int getValue24();
void setValue24(int value);
double getValue25();
void setValue25(double value);
byte getValue26();
void setValue26(byte value);
double getValue27();
void setValue27(double value);
double getValue28();
void setValue28(double value);
double getValue29();
void setValue29(double value);
double getValue30();
void setValue30(double value);
double getValue31();
void setValue31(double value);
double getValue32();
void setValue32(double value);
}
interface IFacadeDaughter extends IFacadeBase {
long getValue33();
void setValue33(long value);
String getValue34();
void setValue34(@MaxUtf8Length(11) String value);
int getValue35();
void setValue35(int value);
String getValue36();
void setValue36(@MaxUtf8Length(11) String value);
int getValue37();
void setValue37(int value);
long getValue38();
void setValue38(long value);
short getValue39();
void setValue39(short value);
long getValue40();
void setValue40(long value);
String getValue41();
void setValue41(@MaxUtf8Length(43) String value);
long getValue42();
void setValue42(long value);
long getValue43();
void setValue43(long value);
long getValue44();
void setValue44(long value);
long getValue45();
void setValue45(long value);
long getValue46();
void setValue46(long value);
byte getValue47();
void setValue47(byte value);
byte getValue48();
void setValue48(byte value);
double getValue49();
void setValue49(double value);
double getValue50();
void setValue50(double value);
double getValue51();
void setValue51(double value);
byte getValue52();
void setValue52(byte value);
byte getValue53();
void setValue53(byte value);
byte getValue54();
void setValue54(byte value);
byte getValue55();
void setValue55(byte value);
byte getValue56();
void setValue56(byte value);
long getValue57();
void setValue57(long value);
byte getValue58();
void setValue58(byte value);
double getValue59();
void setValue59(double value);
double getValue60();
void setValue60(double value);
double getValue61();
void setValue61(double value);
double getValue62();
void setValue62(double value);
double getValue63();
void setValue63(double value);
long getValue64();
void setValue64(long value);
long getValue65();
void setValue65(long value);
double getValue66();
void setValue66(double value);
double getValue67();
void setValue67(double value);
short getValue68();
void setValue68(short value);
String getValue69();
void setValue69(@MaxUtf8Length(101) String value);
String getValue70();
void setValue70(@MaxUtf8Length(17) String value);
boolean getValue71();
void setValue71(boolean value);
boolean getValue72();
void setValue72(boolean value);
String getValue73();
void setValue73(@MaxUtf8Length(11) String value);
String getValue74();
void setValue74(@MaxUtf8Length(9) String value);
byte getValue75();
void setValue75(byte value);
int getValue76();
void setValue76(int value);
int getValue77();
void setValue77(int value);
String getValue78();
void setValue78(@MaxUtf8Length(3) String value);
int getValue79();
void setValue79(int value);
double getValue80();
void setValue80(double value);
byte getValue81();
void setValue81(byte value);
byte getValue82();
void setValue82(byte value);
byte getValue83();
void setValue83(byte value);
byte getValue84();
void setValue84(byte value);
byte getValue85();
void setValue85(byte value);
byte getValue86();
void setValue86(byte value);
byte getValue87();
void setValue87(byte value);
byte getValue88();
void setValue88(byte value);
int getValue89();
void setValue89(int value);
int getValue90();
void setValue90(int value);
int getValue91();
void setValue91(int value);
int getValue92();
void setValue92(int value);
int getValue93();
void setValue93(int value);
int getValue94();
void setValue94(int value);
int getValue95();
void setValue95(int value);
int getValue96();
void setValue96(int value);
int getValue97();
void setValue97(int value);
int getValue98();
void setValue98(int value);
int getValue99();
void setValue99(int value);
int getValue100();
void setValue100(int value);
int getValue101();
void setValue101(int value);
int getValue102();
void setValue102(int value);
int getValue103();
void setValue103(int value);
int getValue104();
void setValue104(int value);
double getValue105();
void setValue105(double value);
double getValue106();
void setValue106(double value);
long getValue107();
void setValue107(long value);
long getValue108();
void setValue108(long value);
long getValue109();
void setValue109(long value);
byte getValue110();
void setValue110(byte value);
byte getValue111();
void setValue111(byte value);
byte getValue112();
void setValue112(byte value);
byte getValue113();
void setValue113(byte value);
byte getValue114();
void setValue114(byte value);
byte getValue115();
void setValue115(byte value);
byte getValue116();
void setValue116(byte value);
byte getValue117();
void setValue117(byte value);
byte getValue118();
void setValue118(byte value);
byte getValue119();
void setValue119(byte value);
byte getValue120();
void setValue120(byte value);
byte getValue121();
void setValue121(byte value);
byte getValue122();
void setValue122(byte value);
byte getValue123();
void setValue123(byte value);
byte getValue124();
void setValue124(byte value);
byte getValue125();
void setValue125(byte value);
int getValue126();
void setValue126(int value);
int getValue127();
void setValue127(int value);
int getValue128();
void setValue128(int value);
int getValue129();
void setValue129(int value);
int getValue130();
void setValue130(int value);
int getValue131();
void setValue131(int value);
int getValue132();
void setValue132(int value);
int getValue133();
void setValue133(int value);
int getValue134();
void setValue134(int value);
int getValue135();
void setValue135(int value);
int getValue136();
void setValue136(int value);
int getValue137();
void setValue137(int value);
int getValue138();
void setValue138(int value);
int getValue139();
void setValue139(int value);
int getValue140();
void setValue140(int value);
int getValue141();
void setValue141(int value);
double getValue142();
void setValue142(double value);
double getValue143();
void setValue143(double value);
byte getValue144();
void setValue144(byte value);
String getValue145();
void setValue145(@MaxUtf8Length(3) String value);
short getValue146();
void setValue146(short value);
byte getValue147();
void setValue147(byte value);
byte getValue148();
void setValue148(byte value);
int getValue149();
void setValue149(int value);
short getValue150();
void setValue150(short value);
boolean getValue151();
void setValue151(boolean value);
boolean getValue152();
void setValue152(boolean value);
short getValue153();
void setValue153(short value);
short getValue154();
void setValue154(short value);
long getValue155();
void setValue155(long value);
long getValue156();
void setValue156(long value);
long getValue157();
void setValue157(long value);
long getValue158();
void setValue158(long value);
long getValue159();
void setValue159(long value);
long getValue160();
void setValue160(long value);
long getValue161();
void setValue161(long value);
short getValue162();
void setValue162(short value);
short getValue163();
void setValue163(short value);
short getValue164();
void setValue164(short value);
}
interface IFacade extends IFacadeBase {
@Array(length = 3)
void setDaughterAt(int idx, IFacadeDaughter daughter);
IFacadeDaughter getDaughterAt(int idx);
@Array(length = 3)
void setSonAt(int idx, IFacadeSon son);
IFacadeSon getSonAt(int idx);
}
}