gpt4 book ai didi

优化 Lisp 函数调用

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:57 25 4
gpt4 key购买 nike

如果我的代码正在调用一个函数,并且该函数的参数之一会根据特定条件而变化,那么将条件语句作为函数的参数是否更有效,或者在条件语句。示例:

(if condition (+ 4 3) (+ 5 3))
(+ (if condition 4 5) 3)

显然这只是一个例子:在真实场景中,数字将被长而复杂的表达式替换,充满变量。 if 可能是一个长的 cond 语句。

哪个在速度、空间等方面效率更高?

最佳答案

不要

您关心的不是性能(在这种情况下差异很小),而是代码的可读性。

记住,

"... a computer language is not just a way of getting a computer toperform operations, but rather ... it is a novel formal medium forexpressing ideas about methodology"

Abelson/Sussman "Structure andInterpretation of Computer Programs".

您编写的代码主要是供他人(明年还有您自己!)阅读。计算机可以执行它的事实是一个受欢迎的附带好处。(当然,我在夸大其词,但比你想象的要少得多)。

好的...

既然你跳过了长篇大论(如果你声称你没有,请闭上眼睛告诉我我上面提到的具体语言),让我试着回答你的问题。

如果您分析您的程序并发现这个地方是瓶颈,您应该首先确保您使用的是正确的算法。

例如,使用线性排序(合并/堆)而不是二次(冒泡/插入)排序将比您正在考虑的微优化产生更大的差异。

然后你应该反汇编你的代码的两个版本;较短的版本 (ceteris paribus) 可能稍微快一些。

最后,您可以浪费几个小时的机器时间,在一个原本空闲的盒子上重复运行相同输出的两个版本,以发现这两种方法之间没有统计上的显着差异。

关于优化 Lisp 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com