是否有可能加速F#编译器?

时间:2009-09-04 21:10:36

标签: f# mono

从F#1.9.6.16和Mono 2.4.2.3开始,我没有对F#程序集进行AOT,导致出现分段错误。 fsi几乎无法使用(有时会崩溃),fsc非常缓慢。在Windows下,F#也不是最快的编译器。有什么可以帮助这种情况吗?

3 个答案:

答案 0 :(得分:4)

我刚刚找到了一种在Linux上编写F#脚本的方法,它不依赖fsi而是自动重新编译,因此速度相当快:

鉴于/usr/local/bin/fsx

#!/bin/bash
src=$1
tgt=$src.exe
if [[ $src -nt $tgt ]]
then
    fsc $src -o $tgt >/dev/null && exec mono $tgt
else
    exec mono $tgt
fi

可以编写省略shebang的脚本,依赖于默认的shell:

#light (*
    exec fsx $0
*)

printfn "Hello, world!"

运行时,shell跳过第一行,认为它是注释,并运行exec fsx $0,如果可执行文件已过期,则会使用fsc编译脚本,然后运行它。对于F#,shell命令只是一个注释。

答案 1 :(得分:3)

帮助这种情况的最好方法是提交错误。如果您的某个特定项目或环境显着减速,我强烈建议您提交错误消息。通常情况下,真实世界的客户场景在跟踪产品性能问题方面非常有用。

与Visual Studio中的其他语言一样,F#处理通过微软连接网站提交的客户错误。

(编辑:在F#的特定情况下,您也可以发送电子邮件至fsbugs@microsoft.com。)

答案 2 :(得分:1)

在Mac OS X中,程序为fsharpi

hello.fs:

#light (*
    exec fsharpi --exec $0 --quiet
*)

System.Console.WriteLine "Hello World"