IronScheme是解释的还是编译的?它是否从.NET Framework优化中获益?

IronScheme是解释的还是编译的?它是否从.NET Framework优化中获益?,.net,optimization,compiler-construction,scheme,ironscheme,.net,Optimization,Compiler Construction,Scheme,Ironscheme,在《IronPython在行动中》一书中,作者指出IronPython与CPython不同,它从某些优化中获益,无论是在JIT中还是在框架本身中,CPython都无法利用这些优化。因此,IronPython可能比CPython更快,特别是对于多线程场景 是否从这些优化中获益?它是一个解释器(不是编译器)吗?它是一个解释器吗?因为这是Lisp的本质,它必须被解释以提供类似Lisp的灵活性?如果它是一个解释器,它还能从抖动中的优化中获益吗?像IronPython一样(我基于IronScheme的DL

在《IronPython在行动中》一书中,作者指出IronPython与CPython不同,它从某些优化中获益,无论是在JIT中还是在框架本身中,CPython都无法利用这些优化。因此,IronPython可能比CPython更快,特别是对于多线程场景

是否从这些优化中获益?它是一个解释器(不是编译器)吗?它是一个解释器吗?因为这是Lisp的本质,它必须被解释以提供类似Lisp的灵活性?如果它是一个解释器,它还能从抖动中的优化中获益吗?

像IronPython一样(我基于IronScheme的DLR的初始版本),IronScheme一直编译到IL级别

此外,IronScheme中没有解释部分(除非您调用运行时符号查找),因为我几乎从我的DLR“分支”中删除了所有这些部分,因为没有使用这些部分并减少了代码占用(我估计我只使用了大约25%的DLR,其余部分相当以Python为中心)

要查看生成了什么IL,可以查看Reflector.NET中的
ironscheme.boot.dll
程序集(最好使用IL模式,因为C#往往会被奇怪地重新构造,并且在少数情况下完全错误)。整个程序集由IronScheme编译。查看运行时生成的代码要复杂得多

如前所述,这确实具有JIT的所有好处,并且由于我对DLR进行了优化,使其更加以方案为中心,所以在我上次测试它时,它的执行速度通常比IronPython快(至少在18个月前,我意识到IronPython从那时起已经有了不少改进,但IronScheme的速度要快一些,甚至使用了“感觉”更像Python的Scheme来平衡球赛)

此外,我尝试尽可能多地使用.NETFramework作为IrOnStudio的基础,并使互操作更容易。如“代码>向量,<代码>字节向量,<代码>二进制端口和<代码>哈希表< /代码>是基于我们熟悉和使用的.NET.NET类;<代码>对象[]、

字节[]
哈希表
等等