首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >球拍交互性能与编译性能

球拍交互性能与编译性能
EN

Stack Overflow用户
提问于 2012-04-13 12:42:52
回答 2查看 5.1K关注 0票数 25

我是否编译一个球拍程序似乎对运行时性能没有影响。

仅仅是文件的初始加载通过编译得到了改进吗?换句话说,运行racket src.rkt会即时执行jit编译吗?这就是为什么我看不出编译与交互没有区别的原因。

即使对于整数运算的紧密循环,我认为会出现一些差异,但无论我之前是否执行过raco make,分析时间都是相等的。

我错过了什么简单的东西吗?

另外,我注意到我可以对源文件(.rkt)或.zo文件运行球拍。如果找到与.rkt文件对应的.zo,racket会自动使用吗?还是需要显式使用.zo文件?无论哪种方式,这对我看到的性能数据都没有影响。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 13:03:28

是的,你是对的。

code分两个阶段编译代码:首先,代码被编译成字节码形式,然后当它运行时,它被编译成机器码。当你编译一个文件时,你基本上是在创建字节码,这样可以节省以后重新编译它的时间。因为对于小段代码来说,这通常不会花费很多时间,所以您在运行时不会看到任何明显的差异。举一个极端的例子,您可以删除收集树中的所有*.zo文件并启动DrRacket --由于有大量的代码,启动将需要很长时间,但是一旦启动,它就会像往常一样运行。(单击"run“也会很慢,因为这将重新加载和重新编译一些文件。)对于较大的代码段,另一个问题是编译过程会导致更高的内存消耗,但对于较小的代码段,这也不是问题。

有关如何提高性能的提示,另请参阅指南中的Performace chapter

票数 29
EN

Stack Overflow用户

发布于 2012-04-13 13:03:29

code将始终编译您的代码,无论它是在REPL中交互运行还是从命令行运行。Here是指南中解释它的部分。在交互模式下,编译器将每个表达式/定义转换为内存中的字节码并执行。否则,编译器将字节码输出到zo文件。

注: Eli与我同时回复。有关更多细节,请参阅他的回应。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10135327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档