codenotknock commented on issue #1104:
URL: https://github.com/apache/fury/issues/1104#issuecomment-2177419587
```java
public class FurySerializer implements MySerializer {
private Fury fury;
public FurySerializer() {
fury = Fury.builder().withLanguage(Language.JAVA)
.withRefTracking(false)
.requireClassRegistration(false)
.build();
}
@Override
public <T extends Serializable> byte[] serialize(T obj) {
return fury.serialize(obj);
}
@Override
public <T extends Serializable> T deSerialize(byte[] bytes, Class<T>
clazz) {
return (T) fury.deserialize(bytes);
}
}
```
```java
@Warmup(iterations = 10, time = 2)
@Measurement(iterations = 30, batchSize = 100)
@Fork(2)
@State(Scope.Thread)
public class BaseJMH {
static BaseEntity[] entityArray = new BaseEntity[entityCreators.length];
static byte[][] entityBytesArray = new byte[entityCreators.length][];
@Param(value = {"1", "1"})
private int length;
/**
* 初始化 测试数据
*
* @param serializer
*/
protected void init(MySerializer serializer) {
try {
for (int n = 0; n < entityCreators.length; n++) {
entityArray[n] = entityCreators[n].create();
entityBytesArray[n] = serializer.serialize(entityArray[n]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 序列化测试
*
* @param bh
* @throws Exception
*/
@Benchmark
public void testMultiThreadSharedSingletonSerialize(Blackhole bh) throws
Exception {
MySerializer serializer = getSingletonSerializer();
for (int n = 0; n < entityArray.length; n++) {
bh.consume(serializer.serialize(entityArray[n]));
}
bh.consume(length);
}
/**
* 反序列化测试
*
* @param bh
* @throws Exception
*/
@Benchmark
public void testMultiThreadSharedSingletonDeserialize(Blackhole bh)
throws Exception {
MySerializer serializer = getSingletonSerializer();
for (int n = 0; n < entityBytesArray.length; n++) {
bh.consume(serializer.deSerialize(entityBytesArray[n],
entityArray[n].getClass()));
}
bh.consume(length);
}
/**
* 序列化测试
*
* @param bh
* @throws Exception
*/
@Benchmark
public void testMultiThreadMultitonSerialize(Blackhole bh) throws
Exception {
MySerializer serializer = getMultitonSerializer();
for (int n = 0; n < entityArray.length; n++) {
bh.consume(serializer.serialize(entityArray[n]));
}
bh.consume(length);
}
/**
* 反序列化测试
*
* @param bh
* @throws Exception
*/
@Benchmark
public void testMultiThreadMultitonDeserialize(Blackhole bh) throws
Exception {
MySerializer serializer = getMultitonSerializer();
for (int n = 0; n < entityBytesArray.length; n++) {
bh.consume(serializer.deSerialize(entityBytesArray[n],
entityArray[n].getClass()));
}
bh.consume(length);
}
protected MySerializer getMultitonSerializer() {
return null;
}
protected MySerializer getSingletonSerializer() {
return null;
}
protected String getClassName() {
return null;
}
@Test
public void doTest() throws RunnerException {
Options opt = new OptionsBuilder()
.include(getClassName())
.build();
new Runner(opt).run();
}
}
```
```java
@Threads(8)
public class TestFurySerializer extends BaseJMH {
static MySerializer singletonSerializer =
SerializerCreatorFactory.FurySerializerCreator.INSTANCE.create();
MySerializer multitonSerializer =
SerializerCreatorFactory.FurySerializerCreator.INSTANCE.create();
public TestFurySerializer() {
init(singletonSerializer);
}
@Override
public MySerializer getMultitonSerializer() {
return singletonSerializer;
}
@Override
public MySerializer getSingletonSerializer() {
return multitonSerializer;
}
@Override
public String getClassName() {
return this.getClass().getSimpleName();
}
}
```
```java
@Data
public class Consumer extends BaseEntity {
private LocalDateTime modified;
private long oid;
private String ype;
private String ick;
private long tid;
public static Consumer build() {
Consumer consumer = new Consumer();
consumer .setModified(LocalDateTime.now());
consumer .setOid(216356211771L);
consumer .setYpe("refund");
consumer .setIck("302047");
consumer .setTid(211771L);
return consumer ;
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]