找回密码
 立即注册

QQ登录

只需一步,快速开始

齐天大猫

初级会员

37

主题

87

帖子

312

积分

初级会员

积分
312
齐天大猫
初级会员   /  发表于:2022-10-26 21:16  /   查看:858  /  回复:3
1金币
  1.     for (Map.Entry<IWorksheet, List<ITable>> e : tables.entrySet()) {
  2.             IWorksheet sheet = e.getKey();
  3.             sheet.setDataSource(sheetDatasources.get(sheet.getName()));
  4.             for (ITable table : e.getValue()) {
  5.                 long now = System.currentTimeMillis();
  6.                 table.setBindingPath(table.getName());
  7.                 System.out.println("bind time:" + (System.currentTimeMillis() - now));//绑定耗时
  8.                 log.info(sheet.getName() + ":" + table.getName() + "bind time:" + (System.currentTimeMillis() - now));
  9.             }
  10.         }
复制代码
疑问1:sheet.setDataSource和table.setBindingPath这两个方法是是否是线程安全的呢?因考虑到table.setBindingPath效率问题,上述代码考虑并发执行。


疑问2: 如果table数据达到5w以上,table.setBindingPath时间可能会比较久(大于20秒甚至50秒),有没有方法可以优化一下呢?

最佳答案

查看完整内容

您好, 问题1: sheet.setDataSource和table.setBindingPath 不支持并发执行,在绑定数据源之前需要先绑定好字段信息。 问题2: 您提供一个具体的demo,demo内整理好您测试的数据,并截图您测试的结果,这边在代码基础上调研下是否还有可优化空间。

3 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-26 21:16:50
来自 2#
您好,
问题1:
sheet.setDataSource和table.setBindingPath 不支持并发执行,在绑定数据源之前需要先绑定好字段信息。
问题2:
您提供一个具体的demo,demo内整理好您测试的数据,并截图您测试的结果,这边在代码基础上调研下是否还有可优化空间。
回复 使用道具 举报
齐天大猫
初级会员   /  发表于:2022-10-27 18:56:20
3#
Lynn.Dou 发表于 2022-10-27 17:59
您好,
问题1:
sheet.setDataSource和table.setBindingPath 不支持并发执行,在绑定数据源之前需要先绑 ...

如果先用模板fromJson,再去绑定数据呢?是否可以并发?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-28 18:31:00
4#
同样的,需要先fromJSON加载数据后,才能进行绑定数据,不能并发执行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部