找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2154|回复: 6

[每日一码] XD Excel 解析库应用(2) --- 高速读写单元格性能测试

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-23 20:14:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 newer 于 2014-10-23 20:16 编辑

  1. (defun c:tt ()
  2.   (defun test (n)
  3.     (setq book (xdex_book_open))
  4.     (if book
  5.       (progn
  6.         (if (setq sheet (xdex_book_addsheet "test" t))
  7.           (progn
  8.             (setq num (* maxRow maxCol))
  9.             (setq t1 (xdrx_runtime t))
  10.             (cond
  11.               ((= n 0)
  12.                 (princ (strcat "\n写 " (itoa num) "  个单元格."))
  13.                 (princ "\n\n======================================\n写字符串测试...        ")
  14.                 (setq row 0
  15.                       col 0
  16.                 )
  17.                 (repeat maxRow
  18.                   (setq col 0)
  19.                   (repeat maxCol
  20.                     (xdex_cell_write row col (xdrx_string_rand 8))
  21.                     (setq col (1+ col))
  22.                   )
  23.                   (setq row (1+ row))
  24.                 )
  25.               )
  26.               ((= n 1)
  27.                 (princ (strcat "\n写 " (itoa num) "  个单元格."))
  28.                 (princ "\n\n======================================\n写数字测试...          ")
  29.                 (setq row 0
  30.                       col 0
  31.                 )
  32.                 (repeat maxRow
  33.                   (setq col 0)
  34.                   (repeat maxCol
  35.                     (xdex_cell_write row col (xdrx_math_rand 10000))
  36.                     (setq col (1+ col))
  37.                   )
  38.                   (setq row (1+ row))
  39.                 )
  40.               )
  41.               ((= n 2)
  42.                 (princ "\n\n======================================\n读数字测试...          ")
  43.                 (princ (strcat "\n读 " (itoa num) "  个单元格."))
  44.                 (if (xdex_book_load "pernum.xls")
  45.                   (progn
  46.                     (setq row 0
  47.                           col 0
  48.                     )
  49.                     (repeat maxRow
  50.                       (setq col 0)
  51.                       (repeat maxCol
  52.                         (xdex_cell_read row col)
  53.                       )
  54.                       (setq row (1+ row))
  55.                     )
  56.                   )
  57.                 )
  58.               )
  59.               ((= n 3)
  60.                 (princ "\n\n======================================\n读字符串测试...          ")
  61.                 (princ (strcat "\n读 " (itoa num) "  个单元格."))
  62.                 (if (xdex_book_load "perstr.xls")
  63.                   (progn
  64.                     (setq row 0
  65.                           col 0
  66.                     )
  67.                     (repeat maxRow
  68.                       (setq col 0)
  69.                       (repeat maxCol
  70.                         (xdex_cell_read row col)
  71.                       )
  72.                       (setq row (1+ row))
  73.                     )
  74.                   )
  75.                 )
  76.               )
  77.             )
  78.             (setq d (xdrx_runtime))
  79.             (princ "\n开始.")
  80.             (cond
  81.               ((or
  82.                  (= n 0)
  83.                  (= n 1)
  84.                )
  85.                 (princ (strcat "\n\n写入时间:" (rtos d 2 2) " 秒."))
  86.                 (setq dd (/ num d))
  87.                 (princ (strcat "\n写入速度: " (rtos dd 2 2) " 单元格/秒"))
  88.                 (princ "\n\n存盘速度测试....")
  89.                 (if (= n 1)
  90.                   (xdex_book_save "pernum.xls")
  91.                   (xdex_book_save "perstr.xls")
  92.                 )
  93.                 (setq d2 (xdrx_runtime)
  94.                       d3 (- d2 d)
  95.                 )
  96.                 (princ (strcat "\n存盘时间:    " (rtos d3 2 2) "  秒."))
  97.                 (princ (strcat "\n\n写入、存盘总共花费时间:" (rtos d2 2 2)
  98.                                "  秒."
  99.                        )
  100.                 )
  101.                 (princ (strcat "\n存盘速度:" (rtos (/ num d2) 2 2)
  102.                                "  单元格/秒"
  103.                        )
  104.                 )
  105.               )
  106.               ((or
  107.                  (= n 2)
  108.                  (= n 3)
  109.                )
  110.                 (princ (strcat "\n\n读入时间:" (rtos d 2 2) " 秒."))
  111.                 (setq dd (/ num d))
  112.                 (princ (strcat "\n读入速度: " (rtos dd 2 2) " 单元格/秒"))
  113.               )

  114.             )
  115.           )
  116.         )
  117.       )
  118.       (xdex_book_close)
  119.     )
  120.   )
  121.   (if (and
  122.         (setq maxRow (getint "\n输入行数:"))
  123.         (setq maxCol (getint "\n输入列数:"))
  124.       )
  125.     (progn
  126.       (test 0)
  127.       (test 1)
  128.       (test 2)
  129.       (test 3)
  130.     )
  131.   )
  132.   (princ)
  133. )




1、测试1万个格子读写存盘


命令: tt

输入行数:1000

输入列数:10

写 10000  个单元格.

======================================
写字符串测试...
开始.

写入时间:0.34 秒.
写入速度: 29154.52 单元格/秒

存盘速度测试....
存盘时间:    0.04  秒.

写入、存盘总共花费时间:0.39  秒.
存盘速度:25974.03  单元格/秒
写 10000  个单元格.

======================================
写数字测试...
开始.

写入时间:0.37 秒.
写入速度: 27027.03 单元格/秒

存盘速度测试....
存盘时间:    0.03  秒.

写入、存盘总共花费时间:0.4  秒.
存盘速度:25062.66  单元格/秒

======================================
读数字测试...
读 10000  个单元格.
开始.

读入时间:0.23 秒.
读入速度: 42918.45 单元格/秒

======================================
读字符串测试...
读 10000  个单元格.
开始.

读入时间:0.19 秒.
读入速度: 51813.47 单元格/秒

1.gif
===================================================================

读写50万个单元格测试

命令: tt

输入行数:1000

输入列数:500

写 500000  个单元格.

======================================
写字符串测试...
开始.

写入时间:18.85 秒.
写入速度: 26528.01 单元格/秒

存盘速度测试....
存盘时间:    0.02  秒.

写入、存盘总共花费时间:18.87  秒.
存盘速度:26502.7  单元格/秒
写 500000  个单元格.

======================================
写数字测试...
开始.

写入时间:22.98 秒.
写入速度: 21760.89 单元格/秒

存盘速度测试....
存盘时间:    0.25  秒.

写入、存盘总共花费时间:23.23  秒.
存盘速度:21525.74  单元格/秒

======================================
读数字测试...
读 500000  个单元格.
开始.

读入时间:4.82 秒.
读入速度: 103734.44 单元格/秒

======================================
读字符串测试...
读 500000  个单元格.
开始.

读入时间:8.58 秒.
读入速度: 58268.27 单元格/秒




50万单元格的数据写也不过才20秒左右,还没见过这么快的操作EXCEL的工具,XDExcel解析库测试中,即将发布。

BaiduShurufa_2014-10-23_20-11-45.png
BaiduShurufa_2014-10-23_20-11-25.png


本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 127个

财富等级: 日进斗金

发表于 2014-10-23 20:40:26 | 显示全部楼层
好像看不懂!!!!

点评

读写EXCEL的几个操作函数而已。打开,读,写,关闭。 上面的程序是测试读写速度的。字符串是随机生成的。  详情 回复 发表于 2014-10-23 21:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-10-23 21:01:02 | 显示全部楼层
spp_wall 发表于 2014-10-23 20:40
好像看不懂!!!!

读写EXCEL的几个操作函数而已。打开,读,写,关闭。
上面的程序是测试读写速度的。字符串是随机生成的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-23 22:21:14 来自手机 | 显示全部楼层
字符串比数字要多费些时间,就excel本身cell有多个格式,常规比其它格式要简单,用com也只有string格式,用第三方库才有更多选择
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 43个

财富等级: 招财进宝

发表于 2014-10-23 22:36:47 | 显示全部楼层
不懂
~~~~~~~~~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 92个

财富等级: 招财进宝

发表于 2014-10-25 15:22:27 | 显示全部楼层
不懂!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-25 21:43:24 来自手机 | 显示全部楼层
效率相当的不错!比com方式不知快多少倍!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-24 22:47 , Processed in 0.208742 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表