gpt4 book ai didi

performance - 定义所有新语法是否会影响 Scheme、Racket 的性能?

转载 作者:行者123 更新时间:2023-12-04 03:11:08 27 4
gpt4 key购买 nike

我用 Racket define-syntax-parser 创建了一个新语言。许多新语法甚至替换了基本形式。

我打算在生产中使用新语言,但不知道太多新语法是否会影响性能。

我应该编译成二进制还是类似的?

最佳答案

TL; DR:没有性能损失

您引入的语法在宏扩展时得到扩展。这意味着如果您执行 raco make,它将用扩展形式替换所有宏的使用。

有时,在制作功能时,您的扩展代码可能比您最初编写代码的方式更复杂。这也可能被 jit 编译器删除,就像其他未优化的代码一样。

有时您的功能需要更加复杂,而无法将其简化为最简单的形式。在这种情况下,您可能会损失性能。

例如,覆盖 #%app 以执行数组和列表访问,而您通常会执行 (vector-ref vec 3) 语法 (vec 3) 可以表示数组访问和应用。扩展可能变成 (if (racket:#%app vector? vec) (racket:#%app vector-ref vec 3) (racket:#%app vec 3)) 并且如果系统不能断定它不是 vector? 它将对每个应用程序进行测试。如果要重新调整 [] 的用途,使它们只是数组访问 [vec 5] 可以很容易地变成 (vector- ref vec 3) 没有 (vec 5) 有性能影响,但这也意味着语法告诉你它是什么并且不太通用。

关于performance - 定义所有新语法是否会影响 Scheme、Racket 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187179/

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