Problemas com lentidao ao gerar um relatório jasper

Pessoal estou com um problema , toda vez q eu vou gerar um relatório pela primeira vez ele demora para gerar, apartir da segunda vez ele vai bem rapido , estou enviando o codigo que gera o relatorio se alguem puder ajudar agradeco

` public void relatorioUSALL(List lista, String tipo, Map param, String tip, String nomrel) {
try {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context
.getExternalContext().getResponse();
ServletOutputStream responseStream = response.getOutputStream();
String path = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/Report/" + tipo + “.jrxml”);

    //InputStream pathjrxml = getClass().getResourceAsStream(path);
    //String path = ("C:\\Users\\Administrator\\Desktop\\glassfish4\\glassfish\\domains\\domain1\\applications\\Hibernate\\Report\\" + tipo + ".jrxml" );
    if (tip.equals("0")) {
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=\"" + nomrel + ".pdf\"");
        JasperReport pathReport = JasperCompileManager
                .compileReport(path);
        JasperPrint print = JasperFillManager.fillReport(pathReport, param,
                new JRBeanCollectionDataSource(lista));

        JasperExportManager.exportReportToPdfStream(print, responseStream);
        responseStream.flush();
        responseStream.close();
        context.renderResponse();
        context.responseComplete();
    } else if (tip.equals("1")) {
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + nomrel + ".pdf\"");
        JasperReport pathReport = JasperCompileManager
                .compileReport(path);
        JasperPrint print = JasperFillManager.fillReport(pathReport, param,
                new JRBeanCollectionDataSource(lista));

        JasperExportManager.exportReportToPdfStream(print, responseStream);
        responseStream.flush();
        responseStream.close();
        context.renderResponse();
        context.responseComplete();

    } else if (tip.equals("3")) {
        response.setContentType("application/ms-excel");
        response.addHeader("Content-disposition", "attachment; filename=" + nomrel + ".xls");
        JasperReport pathReport = JasperCompileManager
                .compileReport(path);

        JasperPrint print = JasperFillManager.fillReport(pathReport, param,
                new JRBeanCollectionDataSource(lista));
        ServletOutputStream servletOutputStream = response.getOutputStream();

        JRExporter exporterXLS = new JRXlsExporter();
        exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, print);
        exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);
        exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
        exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
        exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
        exporterXLS.setParameter(JRXlsExporterParameter.CHARACTER_ENCODING, "UTF-8");
        exporterXLS.exportReport();
        responseStream.flush();
        responseStream.close();
        context.renderResponse();
        context.responseComplete();
    } else if (tip.equals("2")) {
        response.addHeader("Content-disposition", "attachment; filename=" + nomrel + ".docx");
        JasperReport pathReport = JasperCompileManager
                .compileReport(path);

        JasperPrint print = JasperFillManager.fillReport(pathReport, null,
                new JRBeanCollectionDataSource(lista));
        ServletOutputStream servletOutputStream = response.getOutputStream();
        JRDocxExporter docxExporter = new JRDocxExporter();
        docxExporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
        docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream);
        docxExporter.exportReport();
        FacesContext.getCurrentInstance().responseComplete();

    }

} catch (Exception e) {
    e.printStackTrace();
}

}`