【问题标题】:silverlight for .NET / CLR based numerical computing on osxSilverlight 用于 .NET / CLR 在 osx 上的基于数值计算
【发布时间】:2010-04-03 00:30:05
【问题描述】:

我对使用 F# 进行数值工作很感兴趣,但我的平台不是基于 Windows 的。对于生成大量短期对象的程序(函数式语言的典型情况),Mono 仍然存在显着的性能损失。

Silverlight 在 OSX 上可用。我看到一些参考资料表明以通常方式编译的程序集无法被引用,但细节上并不清楚。我对 UI 不感兴趣,但想知道是否可以有效地使用与 silverlight 捆绑的 VM 来执行?

我希望能够引用我已经在 java 中拥有的大型数值模型库(通过 IKVM 交叉编译到 .NET 程序集)和用 F# 编写的新代码库。我希望 OSX 上的 silverlight VM 具有良好的性能,并且可以引用外部程序集和本机库。

这可行吗?

【问题讨论】:

  • 如果您能够重建这些针对 Silverlight 的库,您就可以使用它们,否则就不行

标签: silverlight f# mono cross-platform


【解决方案1】:

从技术上讲,Silverlight 程序集与普通 CLR 程序集相似,只是它们引用了不同版本的运行时(以及不同版本的系统库,例如 mscorlib)。 Silverlight 只能运行 Silverlight 程序集,因此如果您正在编译 F# 代码,您需要指示 F# 编译器引用 Silverlight(这里是来自 Luke Hoban 的 Visual Studio templates,这是最近由 Brian McNamara 在 F# 中的 sample Silverlight app)。

现在,关于非 F# 程序集,恐怕这可能是个问题。原则上您不需要重新编译它们 - 有工具可以更改版本(将 CLR 程序集转换为 Silverlight 程序集)。参见例如this article。在实践中,Silverlight 有很多限制(缺少很多方法,出于安全原因,您不允许执行一些反射技巧等)。所以,我担心如果你只是将程序集转换为 Silverlight,它不会真正起作用,但你仍然可以尝试......(但要小心 - 如果缺少引用的方法,你将找不到这个直到 Silverlight 尝试在运行时调用它)。

最后,与 Silverlight 中运行的应用程序通信也存在问题,因为 Silverlight 应用程序的功能非常有限。但是,Silverlight 4 RC 应该允许您在 Out-of-browser 模式下运行时读取/写入本地文件(这可能已经足够好了)。

总结我认为有很多问题可能导致无法使用 Silverlight 来解决此问题。我可能会考虑对 Mono 进行更多测试并向他们发送反馈(如果您发现某些性能明显较差的情况) - 根据我的经验,他们可以非常有效地响应用户的反馈,我有这种感觉对于 Mono 团队来说,F# 可能是一件非常有趣的事情。

【讨论】:

  • 感谢您的洞察力。关于单声道选项,已经有一些关于 LLVM 映射性能的工作,现在新的 GC 正在测试中。话虽如此,我怀疑主要问题是单声道团队过于分散并且可能有不同的优先级。我更喜欢深度而不是广度(深度更多地关注虚拟机,而不是 API 追赶)。
猜你喜欢
  • 2016-05-17
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多