明经CAD社区

?找回密码
?注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 238|回复: 15
打印 上一365体育投注手机客户端下载_365体育投注滚球_bt365-体育投注 下一365体育投注手机客户端下载_365体育投注滚球_bt365-体育投注

[讨论] 1+ + 1 哪个快 ?

[复制链接]
跳转到指定楼层
楼主
发表于 2019-10-28 02:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LISP代码,虽然都对,但是有执行的速度差别,下面问问

(1+??数)



(+ 数??1)

哪个执行速度快?

希望大家写更多函数,说说怎么写,才执行的快。
沙发
发表于 2019-10-28 06:14 | 只看该作者
当然是1+快快
板凳
发表于 2019-10-28 06:48 | 只看该作者
[code="lisp] (defun c:tt()
??(setq i 0)??(setq t1 (getvar "TDUSRTIMER"))
??(repeat 10000000 (setq i (1+ i)))
(princ (strcat "\n""1+耗时:" (rtos (* 86400(-(getvar "TDUSRTIMER")t1)) 2 0) "秒"))
? ? (setq i 0)??(setq t1 (getvar "TDUSRTIMER"))
??(repeat 10000000 (setq i (+ 1 i)))
(princ (strcat "\n""+1耗时:" (rtos (* 86400(-(getvar "TDUSRTIMER")t1)) 2 0) "秒"))
??(princ))[/code]
地板
发表于 2019-10-28 06:52 | 只看该作者
论区别,个人觉得 1+ 写起来顺手,速度没差
5#
发表于 2019-10-28 06:54 | 只看该作者

(defun c:tt()
??(setq i 0)??(setq t1 (getvar "TDUSRTIMER"))
??(repeat 10000000 (setq i (+ 1 i)))
??(princ (strcat "\n""+1耗时:" (rtos (* 86400(-(getvar "TDUSRTIMER")t1)) 2 0) "秒"))
??
??(setq i 0)??(setq t1 (getvar "TDUSRTIMER"))
??(repeat 10000000 (setq i (1+ i)))
??(princ (strcat "\n""1+耗时:" (rtos (* 86400(-(getvar "TDUSRTIMER")t1)) 2 0) "秒"))
??(princ)
)
调换个个位置,结果又不一样了
6#
发表于 2019-10-28 07:13 | 只看该作者
机器内存驻留的问题,能够得到大概的判断就可以!
7#
发表于 2019-10-28 07:55 来自手机 | 只看该作者
这个还有区别呀?
8#
发表于 2019-10-28 08:02 | 只看该作者
从来没有想过这个问题,哪个顺手用哪个呗
9#
发表于 2019-10-28 09:19 | 只看该作者
本帖最后由 wyl219 于 2019-10-28 09:39 编辑

1+是+1的语法糖,本身1+在运行时会被翻译成+1,但是与编译类语言不同,lisp是解析类语言,每次运行的时候都要翻译一下,所以1+会多一点时间,但是这个影响很小.

(defun c:tt( / j t1 t2 t3 lst)
? ? ? ?
? ? ? ? (setq j 1)
? ? ? ? (repeat 10
? ? ? ? ? ? ? ? (princ (strcat "\n第" (rtos j) "次测试开始"))
? ? ? ?? ?(setq t1 (getvar "TDUSRTIMER"))
? ? ? ? ? ? ? ? (repeat 2000000??(1+ 0))
? ? ? ? ? ? ? ? (setq t2 (getvar "TDUSRTIMER"))
? ? ? ? ? ? ? ? (repeat 2000000??(+ 1 0))
? ? ? ? ? ? ? ? (setq t3 (getvar "TDUSRTIMER"))
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? (princ (strcat "\n 1+耗时:" (rtos (* 86400(- t2 t1)) 2 3) "秒"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???"\n +1耗时:" (rtos (* 86400(- t3 t2)) 2 3) "秒"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???"\n +1耗时减1+时"(rtos (* 86400(- t3 t2 t2 (- t1))) 2 3)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???))
? ? ? ? ? ? ? ? (setq lst (cons (- t3 t2 t2 (- t1)) lst))
? ? ? ? ? ? ? ? (setq j (1+ j))
? ? ? ? ? ? ? ?
? ? ? ? )
??(princ (strcat "\n 平均耗时差为" (rtos (/ (* 86400(apply '+ lst )) (1+ (length lst))) 2 3)))
??(princ)
)



第6次测试开始
1+耗时:1.762秒
+1耗时:1.763秒
+1耗时减1+时0.001
第7次测试开始
1+耗时:1.766秒
+1耗时:1.769秒
+1耗时减1+时0.003
第8次测试开始
1+耗时:1.767秒
+1耗时:1.78秒
+1耗时减1+时0.013
第9次测试开始
1+耗时:1.763秒
+1耗时:1.792秒
+1耗时减1+时0.029
第10次测试开始
1+耗时:1.855秒
+1耗时:1.765秒
+1耗时减1+时-0.09
平均耗时差为-0.005


点评

是不是说反了啊?? 发表于 2019-10-28 09:38
10#
发表于 2019-10-28 09:47 | 只看该作者
现在已经过了硬件性能低下的年代,现在的编程都是大型化,需要集体协作以及几代人的努力,易读易维护更为重要。为了提高一点点性能而导致代码晦涩难懂,别人无法维护,实在是得不偿失。时代在发展技术在进步,以往的措施并一定适应现在,现在的也不一定适用未来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )???
?2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2019-10-30 19:27 , Processed in 0.273937 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

? 2001-2013 Comsenz Inc.

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