纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

技术课堂Web系统开发中的表格性能优化实践

6月26日 不星湖投稿
  讲师简介
  王鸿,2020中国。NET开发者峰会主论坛讲师,葡萄城表格技术负责人,GrapeCityDocumentsforExcel项目组资深架构师。
  自2014年起,王鸿老师便一直聚焦于企业高性能表格技术领域的研究,为葡萄城设计了全新的表格组件架构,并带领研发团队推出了一款性能在业界领先的电子表格组件GrapeCityDocumentsforExcel(简称:GcExcel),积累了大量高并发、高可用性表格组件的架构设计经验。课程内容
  在2020中国。NET开发者大会上,王鸿老师受邀与微软、龙芯等知名企业的技术大咖一起,为50余万名开发者带来了一场关于《高性能表格技术优化实践》的技术讲座。
  王鸿老师从葡萄城研发电子表格组件的背景与初衷出发,详细对比了Excel与原生C代码的读取性能差异,并总结了若干针对prototype原型进行性能调优的手段,如减少垃圾回收的影响、共享对象提升性能、压缩数据降低内存、充分利用高速缓存等方式。
  本期,葡萄城公开课将继续邀请王鸿老师担任演讲嘉宾,为错过大会的同学深入讲解葡萄城表格组件的性能调优实践,以及葡萄城表格技术的落地产物SpreadJS和GcExcel。
  以下为公开课的回放视频,欢迎收看:
  视频加载中。。。
  Excel读取1亿个单元格的极限性能是34秒
  为了测试Excel文件的读取性能极限,王鸿老师使用了StopWatch函数来监听Excel的打开时间,测试对象为一个包含30列、1,000,000行、30,000,000个单元格数据的电子表格文件。
  经过测试,Excel打开这个文件需要等待34秒。
  葡萄城GcExcel读取这份文件的极限性能是12秒
  GrapeCityDocumentsforExcel(简称:GcExcel)是一款由王鸿老师参与设计,由西安葡萄城自主研发的基于Java和。NET平台的服务端高性能表格组件。
  使用该组件,系统无需依赖Office、POI或第三方应用软件,即可在服务端批量创建、加载、编辑、打印、导入导出Excel文档,满足在线文档的前后端数据同步、服务端批量导出与打印,以及类Excel报表模板设计和服务端高性能数据处理的业务需求,提供一套完善的类Excel全栈解决方案。
  经过测试,用葡萄城的表格组件GcExcel打开这样一份文件,仅需12秒。
  为了实现与Excel近22秒的性能差距,葡萄城GcExcel都做了哪些性能优化呢?实际上,在推出自主研发的表格组件之前,葡萄城便已经对Excel文档的格式、样式和存储结构进行了深入的研究。
  从Office2007开始,Excel文件就是一个标准的Zip文件,对其解压后,找到一个名为Worksheets的文件夹,在其中的sheet1。xml文件中,存放了每个Excel文件单元格对应的位置和值。
  因此,如何通过更高效的算法取出这些位置和值,便是葡萄城的重点优化方向。
  对于一段未经优化的C代码而言,把每个单元格的值读出来,存放在一个List中,需要27秒。在这里,仅仅将代码中的object改为double,就可以让其在20秒完成。
  葡萄城表格组件的性能优化实践
  一、减少垃圾回收
  由27秒变为20秒的差距,便是垃圾回收带来的影响。
  在List中有太多的object对象,这耗费了大量的垃圾回收时间,尽管它没有被回收掉,但因为它们是object,所以在垃圾回收的过程中,需要不断的检测它们是否可以回收,将object改为double,垃圾回收的时间便可以忽略不计。
  GcExcel如何克服垃圾回收的影响?消除单元格概念,用double存储数字、文本、布尔和错误类型。行存储改成列存储。利用C的泛型,让字典中存储值类型数据。
  二、共享存储及样式压缩
  所谓共享存储,就是把整个软件同的对象只生成一份,放在一个全局的地方,每个对象用一个数字做ID,其它地方只存这个ID。
  以下面的文本为例,所有的文本集中存储在一个表中,每个文本有一个唯一的ID,单元格中只存储这个ID。
  共享存储对降低内存和提升性能有非常明显的作用:降低内存消耗。对一个数据量很大的软件,会有很多数据都是重复的,比如电子表格中,如果文本的数量很大,那么重复率就非常高,把这些文本集中存储,相同的只存一份,你会发现,不同的文本数量其实很少,这会极大降低内存消耗。提升性能。以对字符串做查找、替换为例,如果没有共享集中存储,必须要扫描所有的单元,对每一个单元格文本都做一次比较操作。但有了共享存储,就只需要查找字典就可以了;在字符串比较时,只需要比较数字是否相等就可以了;在排序等操作中,只需先把表中的字符串建立一个索引,排好序,后面需要时利用这个索引就可以了。
  通过共享存储,GcExcel已经把内存的消耗降低了很多,但仍可以进一步优化,便是利用样式压缩。
  如上图所示,保存这张样式表不需要在每个单元格中存储一个数字,而是通过建立一个索引表,表的一栏记录一个区域(一个矩形),另一栏记录这个区域对应的样式的ID。
  通过这样的方式,便可以把样式的存储空间再度降低。极端一点讲,如果整个工作表都是同一种样式,那么这里只需要存储一个矩形和一个数字。
  三、充分利用高速缓存
  现在的CPU都有高速缓存,它能提升CPU处理数据的性能。这个图展示了不同存储介质和CPU的关系:越高速的存储介质离CPU更近,速度越快、空间更小、价格越贵。
  CPU在读取数据的时候,先从最近的缓存中读,只有没命中,才从下一级缓存中读。因此,提升缓存命中率对改善性能意义重大。
  同时,当数据从较慢的存储介质往较快的存储介质复制时,不是依次进行,而是一块一块的复制,也就是说,当访问内存中某一个数据时,它周围相邻的数据也一起读入了离CPU最近的高速缓存。因此,如果下一个时刻就读相邻的数据,便可以直接在缓存中找到,读取速度就会非常快。知道了高速缓存的原理,如何编写缓存友好的代码?在组件设计的时候,选择什么样的数据结构得注意,比如数组和字典,受缓存的影响可能不一样。在访问数据的时候,要注意数据的存储方式。
  当然,除了上述三个优化方法,葡萄城还有更多优化实践。如创建Cache、使用基于集合的操作运算、利用SIMD计算大量数据等。
  以上就是王鸿老师即将分享的部分内容,目前,这些高性能的表格技术均已经实现落地。葡萄城表格技术的落地产物:SpreadJS和GcExcel
  在前端,纯前端表格控件SpreadJS可针对Excel、Grid数据进行在线编辑、在线填报、公式计算,以及各类Excel的模板设计;在后端,服务端表格组件GcExcel可快速批量处理Excel文档,提供高度基于Excel的文档对象模型,并执行更高效的导出与打印。
投诉 评论 转载

小马智行发布一体式自动驾驶系统,搭载Luminar激光雷达IT之家5月11日消息昨日,小马智行与激光雷达企业Luminar联合发布全新自动驾驶系统。该系统使用360度全方位多传感器融合方案。基于此次发布的系统平台,小马智行计划于……技术课堂Web系统开发中的表格性能优化实践讲师简介王鸿,2020中国。NET开发者峰会主论坛讲师,葡萄城表格技术负责人,GrapeCityDocumentsforExcel项目组资深架构师。自2014年起,……厦门国际银行的风控之痛独立稀缺穿透大不代表强,不代表优。作者:费力编辑:木宁风品:阚目来源:铑财铑财研究院我的信息我做主,这不是一句空话。2021年7月,一……特斯拉告知监管机构马斯克说的不对,今年内汽车可能无法实现全自北京时间5月7日午间消息,据报道,特斯拉公司对美国加利福尼亚州监管机构提交了一份备忘录,该公司对加州机动车管理局(DMV)表示,他们可能无法在今年年底之前实现完全自动驾驶技术。……Springboot使用Async开启异步调用大家都知道,java是同步顺序执行。当需要异步执行时,需要新创建一个线程完成。1。使用常规的方法显示异步调用第一步新建ThreadTest。java实现Runnab……关于港澳通行证的那些事老人儿童也要指纹?前几天阿宝给大家发布了港澳通行证又有变化?!不能2分钟续签、必须亲自办理?后台一片问题呀今天阿宝就给大家一一解决首先提醒大家本式港澳通行证9月13日已经……荔枝推出播客车载直播,上线小鹏汽车车载系统4月6日晚间消息,荔枝旗下荔枝播客App推出播客直播功能,且率先上线小鹏汽车的智能车载系统,这也是播客直播在车载场景下的首次应用。荔枝的创始人兼CEO赖奕龙表示,荔枝将通……官方预热明晚2000听雷军直播聊聊小米汽车,名字车型价格发布IT之家4月5日消息小米公司官方微博今晚预热雷军4月6日个人直播及小米汽车的消息。小米公司称,关于小米汽车,你都想知道哪些内幕消息?名字?车型?价格?发布时间?明晚20:……首战即决战,雷军设想未来小米汽车装入新风空调,支持加湿除雾霾4月6日晚间消息,在今日晚间的直播中,小米董事长兼CEO雷军谈及了小米新logo、小米汽车等相关话题。雷军表示,小米汽车的logo,内部意见不一致。在品牌上,三分之二的用……Fisker与富士康签框架协议,2023年开始在美国造车北京时间5月14日早间消息,美国电动汽车制造商Fisker与富士康签署框架协议,目标是2023年四季度开始在美国制造汽车。到了2023年,美国工厂将会启用,现在还不确定工……360周鸿祎互联网造车不是多而是太少5月11日消息,今天360董事长兼CEO周鸿祎首次回应了造车传闻。他宣布360正式投资哪吒汽车,并领投哪吒D轮。周鸿祎表示,对互联网汽车其实冷眼旁观了很久,也有前任高管纷……保时捷CEO警告全球汽车芯片短缺可能会影响日常运营数月IT之家2月22日消息外媒CNBC报道,保时捷首席执行官周一警告称,因为全球半导体芯片短缺,未来几个月,这家德国豪华汽车制造商的日常运营可能会受到非常严重的影响。半导体话……
WiFi万能钥匙场景化布局激活下沉式新连接iOS越狱者的AppStore,CydiaStore宣布停运喷墨打印机常见故障及解决方法,家里有打印机的你快学起来AI落地遥遥无期原来是这些问题拖后腿新动作不断,揭秘极氪驶入行业超车道的秘诀K40游戏版定价预测,1999不是没有可能超窄边框66W!荣耀X20上手评测好看又能打的潮流之作浪潮信息与神州数码的合作碰撞出新的火花上汽R品牌更名飞凡汽车,宣告独立运营幼儿园数学教育活动实施方法论文安徽中兴继远人力资源论文房屋结构设计优化方法研究论文
如果二战是德国赢得了胜利,我们能走上和平发展道路吗?我的校园的作文600字今夏流行显瘦大码高腰五分短裤干净时尚又有范赤月龙城赤月恶魔和神龙的传说神龙为何会坠落?绘就人与自然和谐共生画卷2020年全国的拆迁补偿政策是统一的吗?关于成功的随笔3篇大S疑似怀上3胎,为了爱情当高龄产妇,网友53岁具俊晔还能生脱离了中国的蒙古国举国偿债,艰难度日,未来的路在何方?落泪造句用落泪造句大全这天我回家晚了关于“中国式婆媳”关系的解读

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形