easypoi與easyexcel對(duì)比

導(dǎo)出100w條數(shù)據(jù)(分100次,每次模擬返回1w條數(shù)據(jù),10線程并發(fā)3次,20線程并發(fā)2次)內(nèi)存控制在1G。
代碼:
easy-poi:

        Date start = new Date();
        ExportParams params = new ExportParams("大數(shù)據(jù)測(cè)試", "測(cè)試");

        Random random=new Random();
        Workbook workbook = null;
        List<MsgClient> list=new ArrayList();
        for (int i = 0; i < 100; i++) {
            int s=10000;
            for (int j = 0; j < s; j++) {  //一百萬數(shù)據(jù)量
                MsgClient client = new MsgClient();
                client.setBirthday(new Date());
                client.setClientName("小明" +(i*10000+j));
                client.setClientPhone("18797" + (i*10000+j));
                client.setCreateBy("JueYue");
                client.setId("1" + (i*10000+j));
                client.setRemark("測(cè)試" + (i*10000+j));
                MsgClientGroup group = new MsgClientGroup();
                group.setGroupName("測(cè)試" + (i*10000+j));
                list.add(client);
            }
            workbook=ExcelExportUtil.exportBigExcel(params, MsgClient.class, list);
            list.clear();
        }
        ExcelExportUtil.closeExportBigExcel();
        File savefile = new File("D:/excel/");
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        FileOutputStream fos = new FileOutputStream("D:/excel/excel.bigDataExport"+random.nextInt()+".xlsx");
        workbook.write(fos);
        fos.close();
        System.out.println("bigExcelExport-獲取所有l(wèi)ist完成時(shí)間:"+(new Date().getTime() - start.getTime()));

easy-excel:

        Date start = new Date();
        Random random=new Random();
        FileOutputStream fos = new FileOutputStream("D:/excel/alibaba.bigDataExport"+random.nextInt()+".xlsx");
        ExcelWriter writer = new ExcelWriterBuilder()
                .autoCloseStream(true)
                .excelType(ExcelTypeEnum.XLSX)
                .file(fos)
                .head(MsgClientAlibaba.class)
                .build();

        WriteSheet writeSheet = new WriteSheet();
        writeSheet.setSheetName("target");
        List<MsgClientAlibaba> list=new ArrayList();
        for (int i = 0; i < 100; i++) {
            int s=10000;
            for (int j = 0; j < s; j++) {  //一百萬數(shù)據(jù)量
                MsgClientAlibaba client = new MsgClientAlibaba();
                client.setBirthday(new Date());
                client.setClientName("小明" +(i*10000+j));
                client.setClientPhone("18797" + (i*10000+j));
                client.setCreateBy("JueYue");
                client.setId("1" + (i*10000+j));
                client.setRemark("測(cè)試" + (i*10000+j));
                MsgClientGroup group = new MsgClientGroup();
                group.setGroupName("測(cè)試" + (i*10000+j));
//            client.setGroup(group);
                list.add(client);
            }
            writer.write(list, writeSheet);
            list.clear();
        }
        writer.finish();
        fos.close();
        System.out.println("doExport-獲取所有l(wèi)ist完成時(shí)間:"+(new Date().getTime() - start.getTime()));

看下性能對(duì)比
10線程并發(fā)3次(前3次為poi,后3次為easyexcel)


image.png

從cpu和內(nèi)存使用情況來看,兩者相差不大。
耗時(shí):


image.png

image.png

easyexcel耗時(shí)大概在55s左右,poi的耗時(shí)在84s左右。
20線程并發(fā)兩次
image.png

內(nèi)存被cpu差距不大,響應(yīng)時(shí)間是10線程的兩倍。

demo地址:https://gitee.com/luncene/excel-test.git
參考:https://www.yuque.com/easyexcel/doc/about

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容