马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
源于这个帖子,行数比较多,加上空行 6000 多行
http://bbs.xdcad.net/thread-672899-1-1.html
1 正则表达式一次处理,耗时最长
 - (defun c:t1 (/ fl lst t0)
- (if (setq fl (getfiled "Select Log File" "" "log" 8))
- (progn
- (setq lst (XD::List:FromFile fl)
- t0 (get-utime)
- )
- (mapcar '(lambda (x)
- (XD::String:RegExpS "[^, ]+" x "")
- )
- lst
- )
- (princ (- (get-utime) t0))
- )
- )
- (princ)
- )
2 还是正则表达式,加判断提供不同匹配符,有所提升
 - (defun c:t11 (/ fl lst t0)
- (if (setq fl (getfiled "Select Log File" "" "log" 8))
- (progn
- (setq lst (XD::List:FromFile fl)
- t0 (get-utime)
- )
- (mapcar '(lambda (x)
- (if (vl-string-search "," x)
- (XD::String:RegExpS "[^,]+" x "")
- (XD::String:RegExpS "[^ ]+" x "")
- )
- )
- lst
- )
- (princ (- (get-utime) t0))
- )
- )
- (princ)
- )
3 用 API 拆分,是前两个的 1/3 时间
 - (defun c:t2 (/ fl lst t0)
- (if (setq fl (getfiled "Select Log File" "" "log" 8))
- (progn
- (setq lst (XD::List:FromFile fl)
- t0 (get-utime)
- lst (mapcar '(lambda (x)
- (if (vl-string-search "," x)
- (xdrx_string_split x ",")
- (xdrx_string_split x " ")
- )
- )
- lst
- )
- )
- (princ (- (get-utime) t0))
- )
- )
- (princ)
- )
4 用 Lisp 处理,效率最高!
 - (defun c:t3 (/ fl lst t0)
- (if (setq fl (getfiled "Select Log File" "" "log" 8))
- (progn
- (setq lst (XD::List:FromFile fl)
- t0 (get-utime)
- lst (mapcar '(lambda (x)
- (if (vl-string-search "," x)
- (parse x ",")
- (parse x " ")
- )
- )
- lst
- )
- )
- (princ (- (get-utime) t0))
- )
- )
- (princ)
- )
其它函数
 - (defun get-utime ()
- (* 86400.0 (getvar "tdusrtimer"))
- )
- (defun Parse (str delimiter / post strlst stl)
- (and str
- (/= str "")
- (progn
- (setq stl (strlen delimiter))
- (while (vl-string-search delimiter str)
- (setq post (vl-string-search delimiter str)
- strlst (cons (substr str 1 post) strlst)
- str (substr str (+ 1 post stl))
- )
- )
- (setq strlst (reverse (cons str strlst)))
- )
- )
- strlst
- )
命令: T1 0.452
命令:
命令: T2
0.14
命令:
命令: T3 0.047
命令:
命令: T1 0.593
命令:
命令: T11 0.452
|