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