class PerfExample3 extends PerfExampleBase {

    private static final Logger LOG = Log.logger(PerfExample3.class);

    public static void main(String[] args) throws Exception {
        PerfExample3 tester = new PerfExample3();
        tester.test(args);

        // Stop daemon thread
        HugeFactory.shutdown(30L);
    }

    @Override
    protected void initSchema(SchemaManager schema) {
        // Schema changes will be commit directly into the back-end
        LOG.info("===============  propertyKey  ================");
        schema.propertyKey("id").asInt().ifNotExist().create();
        schema.propertyKey("name").asText().ifNotExist().create();
        schema.propertyKey("age").asInt().valueSingle().ifNotExist().create();
        schema.propertyKey("city").asText().ifNotExist().create();

        LOG.info("===============  vertexLabel  ================");

        schema.vertexLabel("person")
              .properties("name", "age", "city")
              .primaryKeys("name")
              .ifNotExist().create();

        LOG.info("===============  vertexLabel & index  ================");

        schema.indexLabel("personByCity")
              .onV("person").secondary().by("city")
              .ifNotExist().create();
        schema.indexLabel("personByAge")
              .onV("person").range().by("age")
              .ifNotExist().create();

        LOG.info("===============  edgeLabel  ================");

        schema.edgeLabel("knows")
              .sourceLabel("person").targetLabel("person")
              .ifNotExist().create();
    }

    @Override
    protected void testInsert(GraphManager graph, int times, int multiple) {<FILL_FUNCTION_BODY>}

    protected void testAppend(GraphManager graph) {
        Vertex v1 = graph.addVertex(T.label, "person",
                                    "name", String.format("p-%08d", 1),
                                    "city", "Hongkong", "age", 18);
        Vertex v2 = graph.addVertex(T.label, "person",
                                    "name", String.format("p-%08d", 10000002),
                                    "city", "Hongkong", "age", 20);
        v1.addEdge("knows", v2);

        graph.tx().commit();
    }
}

        final int TIMES = times * multiple;
        final int BATCH = 100;
        long total = 0;
        // Insert in order
        for (int i = 0; i < TIMES; i++) {
            for (int j = 0; j < BATCH; j++) {
                String name = String.format("p-%08d", total++);
                Vertex v = graph.addVertex(T.label, "person", "name", name,
                                           "city", "Hongkong", "age", 3);
                this.vertices.add(v.id());
            }
            graph.tx().commit();
        }
    
<methods>public non-sealed void <init>() ,public int test(java.lang.String[]) throws java.lang.Exception,public void testInsertPerf(org.apache.hugegraph.example.PerfExampleBase.GraphManager, int, int, int) throws java.lang.Exception,public void testQueryEdgePerf(org.apache.hugegraph.example.PerfExampleBase.GraphManager, int, int, int) throws java.lang.Exception,public void testQueryVertexPerf(org.apache.hugegraph.example.PerfExampleBase.GraphManager, int, int, int) throws java.lang.Exception<variables>public static final int EDGE_NUM,protected static final Logger LOG,public static final int PERSON_NUM,public static final int SOFTWARE_NUM,protected boolean profile,protected Set<java.lang.Object> vertices