gpt4 book ai didi

c# - 检测 JIT 是否可用

转载 作者:太空狗 更新时间:2023-10-29 20:33:27 32 4
gpt4 key购买 nike

检测 JIT 引擎是否以可移植方式可用的规范(如果有的话,否则任何可靠的)方法是什么?

例如,Xamarin.iOS 不支持 JIT,因为 iOS 平台强制执行 DEP .如今,Mono 非常擅长通过解释大多数事物(如 lambda 表达式)来弥合差距,但有些事物没有(正确)实现,导致运行时异常严重损害性能。

如果可能的话,我想从共享的可移植类库中进行检测。

最佳答案

您可以尝试执行您知道在 AoT 代码上会失败但在 JIT 上不会失败的操作(例如,动态创建类型)并使用 try/catch block 来定义 JIT 是否可用。

它可以像这样实现(请注意,这只会在链接器设置为“链接所有程序集”时失败):

private static bool? _isJITAvailable = null;
public static bool IsJITAvailable()
{
if(_isJITAvailable == null)
{
try
{
//This crashes on iPhone
typeof(GenericClass<>).MakeGenericType(typeof(int));
_isJITAvailable = true;
}
catch(Exception)
{
_isJITAvailable = false;
}
}

return _isJITAvailable.Value;
}

虽然我不会这样做。您真的需要那些“性能更好的回调”吗?这听起来确实像是过早的优化。

关于c# - 检测 JIT 是否可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456967/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com