From 46d7c5ecdd3ca8bbdee8979ef430afa1e3ce7ab0 Mon Sep 17 00:00:00 2001 From: linbin <495561397@qq.com> Date: Mon, 16 Sep 2024 14:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E6=B5=8B=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{BenchMarkWrite.java => BenchMark.java} | 37 +++-- src/test/java/org/example/BenchMarkRead.java | 49 ------ src/test/java/org/example/FunctionTest.java | 59 ------- .../org/example/{festest => }/RightTest.java | 132 +++++++++++++++- .../java/org/example/festest/LongTest.java | 38 ----- .../java/org/example/festest/MapTest.java | 27 ---- .../java/org/example/festest/TestData.java | 146 +++++++++--------- 7 files changed, 217 insertions(+), 271 deletions(-) rename src/test/java/org/example/{BenchMarkWrite.java => BenchMark.java} (73%) delete mode 100644 src/test/java/org/example/BenchMarkRead.java delete mode 100644 src/test/java/org/example/FunctionTest.java rename src/test/java/org/example/{festest => }/RightTest.java (68%) delete mode 100644 src/test/java/org/example/festest/LongTest.java delete mode 100644 src/test/java/org/example/festest/MapTest.java diff --git a/src/test/java/org/example/BenchMarkWrite.java b/src/test/java/org/example/BenchMark.java similarity index 73% rename from src/test/java/org/example/BenchMarkWrite.java rename to src/test/java/org/example/BenchMark.java index cdea72d..7ff7385 100644 --- a/src/test/java/org/example/BenchMarkWrite.java +++ b/src/test/java/org/example/BenchMark.java @@ -1,7 +1,6 @@ package org.example; import com.jfirer.fse.ByteArray; -import com.jfirer.fse.Fse; import com.jfirer.se2.JfireSE; import org.apache.fury.Fury; import org.apache.fury.config.Language; @@ -21,44 +20,48 @@ import java.util.concurrent.TimeUnit; @OutputTimeUnit(TimeUnit.SECONDS) @Fork(1) @State(Scope.Benchmark) -public class BenchMarkWrite +public class BenchMark { - Fse fse = new Fse(); - Fse fse_3 = new Fse().useCompile(); TestData data = new TestData().setTestDataSm(new TestDataSm()).setTestDataSm2(new TestDataSm2()); ByteArray buf = ByteArray.allocate(100); Fury fury = Fury.builder().withLanguage(Language.JAVA)// .requireClassRegistration(false)// .withRefTracking(true).build(); JfireSE jfireSE = JfireSE.config().refTracking().build(); + byte[] serialize = jfireSE.serialize(data); + byte[] serialize2 = fury.serialize(data); - public void testFSENoCompile() - { - buf.clear(); - fse.serialize(data, buf); - } @Benchmark - public void testFury() + public void fury_write() { byte[] bytes = fury.serialize(data); } - public void testFSEDirectCompile() - { - buf.clear(); - fse_3.serialize(data, buf); - } @Benchmark - public void testJfireSE() + public void jfireSe_write() { jfireSE.serialize(data); } + + @Benchmark + public void jfireSE_read() + { + jfireSE.deSerialize(serialize); + } + + @Benchmark + public void fury_read() + { + fury.deserialize(serialize2); + } + + public static void main(String[] args) throws RunnerException { - Options opt = new OptionsBuilder().include(BenchMarkWrite.class.getSimpleName()).build(); + Options opt = new OptionsBuilder().include(BenchMark.class.getSimpleName()).build(); new Runner(opt).run(); } } diff --git a/src/test/java/org/example/BenchMarkRead.java b/src/test/java/org/example/BenchMarkRead.java deleted file mode 100644 index ee660cd..0000000 --- a/src/test/java/org/example/BenchMarkRead.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.example; - -import com.jfirer.se2.JfireSE; -import org.apache.fury.Fury; -import org.apache.fury.config.Language; -import org.example.sm.TestDataSm; -import org.example.sm2.TestDataSm2; -import org.openjdk.jmh.annotations.*; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; - -import java.util.concurrent.TimeUnit; - -@BenchmarkMode(Mode.Throughput) -@Warmup(iterations = 2, time = 3) -@Measurement(iterations = 3, time = 3) -@OutputTimeUnit(TimeUnit.SECONDS) -@Fork(1) -@State(Scope.Benchmark) -public class BenchMarkRead -{ - Fury fury = Fury.builder().withLanguage(Language.JAVA)// - .requireClassRegistration(false)// - .withRefTracking(true).build(); - JfireSE jfireSE = JfireSE.config().refTracking().build(); - TestData data = new TestData().setTestDataSm(new TestDataSm()).setTestDataSm2(new TestDataSm2()); - byte[] serialize = jfireSE.serialize(data); - byte[] serialize2 = fury.serialize(data); - - @Benchmark - public void testJfireSERead() - { - jfireSE.deSerialize(serialize); - } - - @Benchmark - public void testFuryRead() - { - fury.deserialize(serialize2); - } - - public static void main(String[] args) throws RunnerException - { - Options opt = new OptionsBuilder().include(BenchMarkRead.class.getSimpleName()).build(); - new Runner(opt).run(); - } -} diff --git a/src/test/java/org/example/FunctionTest.java b/src/test/java/org/example/FunctionTest.java deleted file mode 100644 index d016792..0000000 --- a/src/test/java/org/example/FunctionTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.example; - -import com.jfirer.se2.ByteArray; -import com.jfirer.se2.JfireSE; -import org.apache.fury.Fury; -import org.example.sm.TestDataSm; -import org.example.sm2.TestDataSm2; -import org.junit.Assert; -import org.junit.Test; - -public class FunctionTest -{ - @Test - public void test() - { - ByteArray byteArray = new ByteArray(1000); - byteArray.writeString("你好"); - byteArray.writeString("nihao"); - byteArray.writeVarInt(20); - byteArray.writeVarLong(13453242); - Assert.assertEquals("你好", byteArray.readString()); - Assert.assertEquals("nihao", byteArray.readString()); - Assert.assertEquals(20, byteArray.readVarInt()); - Assert.assertEquals(13453242, byteArray.readVarLong()); - } - - @Test - public void test2() - { - TestDataSm sm = new TestDataSm(); - sm.setC("dfdfdf"); - TestData testData = new TestData(); - testData.setB(true); - testData.setTestDataSm(sm); - testData.setTestDataSm2(new TestDataSm2()); - TestDataSm[] sms = new TestDataSm[2]; - sms[0] = new TestDataSm().setC("xx"); - testData.setSms(sms); - JfireSE jfireSE = JfireSE.config().build(); - byte[] bytes = jfireSE.serialize(testData); - Assert.assertEquals(testData, jfireSE.deSerialize(bytes)); - TestData read = (TestData) jfireSE.deSerialize(bytes); - Assert.assertEquals("xx", read.getSms()[0].getC()); - Assert.assertNull(read.getSms()[1]); - } - - @Test - public void test3() - { - Fury fury = Fury.builder().requireClassRegistration(false).withRefTracking(true).build(); - Home home = new Home(); - Person person = new Person(); - home.setPerson(person); - person.setHome(home); - fury.serialize(home); - JfireSE jfireSE = JfireSE.config().refTracking().build(); - jfireSE.serialize(home); - } -} diff --git a/src/test/java/org/example/festest/RightTest.java b/src/test/java/org/example/RightTest.java similarity index 68% rename from src/test/java/org/example/festest/RightTest.java rename to src/test/java/org/example/RightTest.java index 2c2498b..b5bcb44 100644 --- a/src/test/java/org/example/festest/RightTest.java +++ b/src/test/java/org/example/RightTest.java @@ -1,7 +1,18 @@ -package org.example.festest; +package org.example; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Output; +import com.jfirer.se2.ByteArray; import com.jfirer.se2.JfireSE; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.fury.Fury; +import org.example.festest.Home; +import org.example.festest.User; import org.example.festest.data.*; +import org.example.festest.data.Person; +import org.example.sm.TestDataSm; +import org.example.sm2.TestDataSm2; import org.junit.Assert; import org.junit.Test; @@ -9,12 +20,20 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Calendar; +import java.util.HashMap; import java.util.Random; import static org.junit.Assert.*; +@Slf4j public class RightTest { + @Data + public class MapDemo + { + private HashMap map = new HashMap(); + } + @Test public void baseTypeTest() throws IllegalArgumentException, IllegalAccessException, UnsupportedEncodingException, ClassNotFoundException, InstantiationException { @@ -146,13 +165,13 @@ public class RightTest @Test public void referenceTest() { - Person person = new Person("linbin", 25); - Person tPerson = new Person("zhangshi[in", 30); + org.example.festest.data.Person person = new org.example.festest.data.Person("linbin", 25); + org.example.festest.data.Person tPerson = new org.example.festest.data.Person("zhangshi[in", 30); person.setLeader(tPerson); tPerson.setLeader(person); - JfireSE jfireSE = JfireSE.config().refTracking().build(); - byte[] serialize = jfireSE.serialize(person); - Person result = (Person) jfireSE.deSerialize(serialize); + JfireSE jfireSE = JfireSE.config().refTracking().build(); + byte[] serialize = jfireSE.serialize(person); + org.example.festest.data.Person result = (org.example.festest.data.Person) jfireSE.deSerialize(serialize); assertEquals("zhangshi[in", result.getLeader().getName()); } @@ -195,7 +214,7 @@ public class RightTest public void objectArrayTest() { Object[] array = new Object[4]; - array[0] = new Person(); + array[0] = new org.example.festest.data.Person(); array[1] = new BaseData(); array[2] = new LongData(); array[3] = new WrapData(); @@ -280,4 +299,103 @@ public class RightTest System.out.println(method.equals(methodObjectTest)); assertEquals(methodObjectTest, method); } + + @Test + public void basetest() + { + JfireSE jfireSE = JfireSE.config().refTracking().build(); + User user = new User(); + user.setAge(123); + user.setName("aaa"); + org.example.festest.Home home = new org.example.festest.Home(); + home.setAddress("ssss"); + home.setUser(user); + user.setHome(home); + byte[] serialize = jfireSE.serialize(user); + User another = (User) jfireSE.deSerialize(serialize); + Assert.assertEquals(user.getAge(), another.getAge()); + Assert.assertEquals(user.getName(), another.getName()); + Home home1 = user.getHome(); + Assert.assertEquals(home.getAddress(), home1.getAddress()); + } + + @Test + public void longtest() + { + Kryo kryo = new Kryo(); + kryo.setReferences(true); + Output output = null; + output = new Output(1, 15096); + kryo.writeClassAndObject(output, new LongData()); + byte[] bb = output.toBytes(); + System.out.println("LongData序列化:kryo基础数据长度:" + bb.length); + JfireSE jfireSE = JfireSE.config().refTracking().build(); + byte[] serialize = jfireSE.serialize(new LongData()); + System.out.println("LongData序列化:jfirese基础数据长度:" + serialize.length); + System.out.println("序列化长度减少" + (bb.length - serialize.length)); + output = new Output(1, 15096); + kryo.writeClassAndObject(output, new BaseData(1)); + bb = output.toBytes(); + log.debug("basedata序列化:kryo基础数据长度:{}", bb.length); + byte[] serialize1 = jfireSE.serialize(new BaseData(1)); + log.info("basedata序列化:jfirese基础数据长度:" + serialize1.length); + log.info("序列化长度减少{}", (bb.length - serialize1.length)); + } + + @Test + public void mapTest() + { + MapDemo demo = new MapDemo(); + demo.getMap().put(1, new BaseData()); + JfireSE jfireSE = JfireSE.config().staticRegisterClass(MapDemo.class).refTracking().build(); + byte[] serialize = jfireSE.serialize(demo); + jfireSE.deSerialize(serialize); + } + + @Test + public void test() + { + ByteArray byteArray = new ByteArray(1000); + byteArray.writeString("你好"); + byteArray.writeString("nihao"); + byteArray.writeVarInt(20); + byteArray.writeVarLong(13453242); + Assert.assertEquals("你好", byteArray.readString()); + Assert.assertEquals("nihao", byteArray.readString()); + Assert.assertEquals(20, byteArray.readVarInt()); + Assert.assertEquals(13453242, byteArray.readVarLong()); + } + + @Test + public void test2() + { + TestDataSm sm = new TestDataSm(); + sm.setC("dfdfdf"); + TestData testData = new TestData(); + testData.setB(true); + testData.setTestDataSm(sm); + testData.setTestDataSm2(new TestDataSm2()); + TestDataSm[] sms = new TestDataSm[2]; + sms[0] = new TestDataSm().setC("xx"); + testData.setSms(sms); + JfireSE jfireSE = JfireSE.config().build(); + byte[] bytes = jfireSE.serialize(testData); + Assert.assertEquals(testData, jfireSE.deSerialize(bytes)); + TestData read = (TestData) jfireSE.deSerialize(bytes); + Assert.assertEquals("xx", read.getSms()[0].getC()); + Assert.assertNull(read.getSms()[1]); + } + + @Test + public void test3() + { + Fury fury = Fury.builder().requireClassRegistration(false).withRefTracking(true).build(); + org.example.Home home = new org.example.Home(); + org.example.Person person = new org.example.Person(); + home.setPerson(person); + person.setHome(home); + fury.serialize(home); + JfireSE jfireSE = JfireSE.config().refTracking().build(); + jfireSE.serialize(home); + } } diff --git a/src/test/java/org/example/festest/LongTest.java b/src/test/java/org/example/festest/LongTest.java deleted file mode 100644 index d897ca2..0000000 --- a/src/test/java/org/example/festest/LongTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.example.festest; - -import com.esotericsoftware.kryo.Kryo; -import com.esotericsoftware.kryo.io.Output; -import com.jfirer.se2.JfireSE; -import lombok.extern.slf4j.Slf4j; -import org.example.festest.data.BaseData; -import org.example.festest.data.LongData; -import org.junit.Test; - -import java.io.UnsupportedEncodingException; - -@Slf4j -public class LongTest -{ - @Test - public void longtest() throws IllegalArgumentException, IllegalAccessException, UnsupportedEncodingException, ClassNotFoundException, InstantiationException - { - Kryo kryo = new Kryo(); - kryo.setReferences(true); - Output output = null; - output = new Output(1, 15096); - kryo.writeClassAndObject(output, new LongData()); - byte[] bb = output.toBytes(); - System.out.println("LongData序列化:kryo基础数据长度:" + bb.length); - JfireSE jfireSE = JfireSE.config().refTracking().build(); - byte[] serialize = jfireSE.serialize(new LongData()); - System.out.println("LongData序列化:jfirese基础数据长度:" + serialize.length); - System.out.println("序列化长度减少" + (bb.length - serialize.length)); - output = new Output(1, 15096); - kryo.writeClassAndObject(output, new BaseData(1)); - bb = output.toBytes(); - log.debug("basedata序列化:kryo基础数据长度:{}", bb.length); - byte[] serialize1 = jfireSE.serialize(new BaseData(1)); - log.info("basedata序列化:jfirese基础数据长度:" + serialize1.length); - log.info("序列化长度减少{}", (bb.length - serialize1.length)); - } -} diff --git a/src/test/java/org/example/festest/MapTest.java b/src/test/java/org/example/festest/MapTest.java deleted file mode 100644 index f4605c8..0000000 --- a/src/test/java/org/example/festest/MapTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.example.festest; - -import com.jfirer.se2.JfireSE; -import lombok.Data; -import org.example.festest.data.BaseData; -import org.junit.Test; - -import java.util.HashMap; - -public class MapTest -{ - @Data - public class MapDemo - { - private HashMap map = new HashMap(); - } - - @Test - public void test() - { - MapDemo demo = new MapDemo(); - demo.getMap().put(1, new BaseData()); - JfireSE jfireSE = JfireSE.config().staticRegisterClass(MapDemo.class).refTracking().build(); - byte[] serialize = jfireSE.serialize(demo); - jfireSE.deSerialize(serialize); - } -} diff --git a/src/test/java/org/example/festest/TestData.java b/src/test/java/org/example/festest/TestData.java index 7a06c05..144a79d 100644 --- a/src/test/java/org/example/festest/TestData.java +++ b/src/test/java/org/example/festest/TestData.java @@ -2,7 +2,6 @@ package org.example.festest; import java.io.Serializable; - public class TestData implements Serializable { private int a = 213212312; @@ -14,15 +13,15 @@ public class TestData implements Serializable private double g = 231321.2132; private float h = (float) 4986.2; private String i = "123452312316789a"; -// private int[] j = new int[]{1, 2, 4, 5}; -// private boolean[] k = new boolean[]{true, false, true, false, false, false, true}; -// private char[] l = new char[]{'a', 'v', 'q', 'j', 'h', 'e', 'f'}; -// private byte[] m = new byte[]{0x32, 0x12, 0x34, (byte) 0x96}; -// private short[] n = new short[]{3, 8, 213, 451, 312, 45}; -// private long[] o = new long[]{12313131313l, 524141431313l, 3131231231425l, 1313123121l}; -// private double[] p = new double[]{6468613646.48646d, 4646.456d, 546864648867.466d}; -// private float[] q = new float[]{46486.2f, 49849.2f, 646854.6f}; -// private String[] r = new String[]{"abcdf12345", "abdfcgf12323"}; + private int[] j = new int[]{1, 2, 4, 5}; + private boolean[] k = new boolean[]{true, false, true, false, false, false, true}; + private char[] l = new char[]{'a', 'v', 'q', 'j', 'h', 'e', 'f'}; + private byte[] m = new byte[]{0x32, 0x12, 0x34, (byte) 0x96}; + private short[] n = new short[]{3, 8, 213, 451, 312, 45}; + private long[] o = new long[]{12313131313l, 524141431313l, 3131231231425l, 1313123121l}; + private double[] p = new double[]{6468613646.48646d, 4646.456d, 546864648867.466d}; + private float[] q = new float[]{46486.2f, 49849.2f, 646854.6f}; + private String[] r = new String[]{"abcdf12345", "abdfcgf12323"}; public boolean equals(Object x) { @@ -31,69 +30,69 @@ public class TestData implements Serializable TestData target = (TestData) x; if (target.a == a && target.b == b && target.c == c && target.d == d && target.e == e && target.f == f && target.g == g && target.h == h && target.i.equals(i)) { -// for (int i = 0; i < target.j.length; i++) -// { -// if (target.j[i] != j[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < k.length; i++) -// { -// if (target.k[i] != k[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < l.length; i++) -// { -// if (target.l[i] != l[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < m.length; i++) -// { -// if (target.m[i] != m[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < n.length; i++) -// { -// if (target.n[i] != n[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < o.length; i++) -// { -// if (target.o[i] != o[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < p.length; i++) -// { -// if (p[i] != target.p[i]) -// { -// return false; -// } -// } -// for (int i = 0; i < r.length; i++) -// { -// if (target.r[i].equals(r[i]) == false) -// { -// return false; -// } -// } -// for (int i = 0; i < q.length; i++) -// { -// if (q[i] != target.q[i]) -// { -// return false; -// } -// } + for (int i = 0; i < target.j.length; i++) + { + if (target.j[i] != j[i]) + { + return false; + } + } + for (int i = 0; i < k.length; i++) + { + if (target.k[i] != k[i]) + { + return false; + } + } + for (int i = 0; i < l.length; i++) + { + if (target.l[i] != l[i]) + { + return false; + } + } + for (int i = 0; i < m.length; i++) + { + if (target.m[i] != m[i]) + { + return false; + } + } + for (int i = 0; i < n.length; i++) + { + if (target.n[i] != n[i]) + { + return false; + } + } + for (int i = 0; i < o.length; i++) + { + if (target.o[i] != o[i]) + { + return false; + } + } + for (int i = 0; i < p.length; i++) + { + if (p[i] != target.p[i]) + { + return false; + } + } + for (int i = 0; i < r.length; i++) + { + if (target.r[i].equals(r[i]) == false) + { + return false; + } + } + for (int i = 0; i < q.length; i++) + { + if (q[i] != target.q[i]) + { + return false; + } + } return true; } else @@ -106,5 +105,4 @@ public class TestData implements Serializable return false; } } - }