这是.NET framework 4.8---->.NET core 5.0
我有一个个人的国际象棋引擎,我正在工作,昨天我决定从.NET framework切换到.NET Core。
在这个过程中我没有更改1行代码,完全相同的代码。
当我这样做的时候,我注意到损失了几个百分点,在2%到5%之间(目前为止)
这足以看出perft每秒平均有500,000到200,000步的差异(如果你不知道这是什么,谷歌一下,这是国际象棋引擎的一种测试)
我所做的是,我创建了一个全新的.NET核心解决方案,其中包含两个项目。
这是#1框架的vbproj:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<DefineTrace>true</DefineTrace>
<OutputPath>..\..\Build\</OutputPath>
<RemoveIntegerChecks>true</RemoveIntegerChecks>
<DocumentationFile>
</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
这是#2框架的csproj:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Build\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoStdLib>false</NoStdLib>
<UseVSHostingProcess>false</UseVSHostingProcess>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
这是#1核心的vbproj:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
<PlatformTarget>x64</PlatformTarget>
<RemoveIntegerChecks>true</RemoveIntegerChecks>
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
</PropertyGroup>
这是#2核心的csproj:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<PlatformTarget>x64</PlatformTarget>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DebugType>pdbonly</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
对于这些时间线,我将运行时限制在cpu的一个特定核心,以确保它处于相同的行为下。无论有没有这个限制,我每次都可以复制
在运行黄圈中的5个测试之前,我先调用引擎做一个热身
我确实读过这篇文章:[TieredCompility]带有热循环的冷方法在分层时可能运行得更慢,我试图打开DisableTier0Jit或关闭TieredCompility,但没有成功
问题是,有人知道我做错了什么吗?
现在,基于我目前的结果,我将继续使用框架,除非我能弄清楚到底发生了什么。
从.NETCORE 3.1升级到.NET5时会出现已知性能回归。
参考:https://github.com/dotnet/runtime/issues/36907
它还没有修复,就像您一样,我坚持我当前的框架(Core3.1),直到.NET5优化。
所以简而言之:不,不是你。
有没有一种方法可以轻松地将面向.NETCore2.0的类库转换为.NET标准? 如果我理解正确,如果有人想在针对不同.NET框架(例如.NET Framework,.NET Core,Xamarin等)的项目中最大限度地提高类库的可重用性,那么以.NET Standard为目标的更好主意 - 前提是所有必需的API都可以在将要定位的.NET Standard版本中提供。 这就是我想将类库从. NE
我是新来的。 我已经开始将我的核心PHP项目转换为laravel 7。我被一些查询问题卡住了。 核心问题是: 我也把它改装成了拉威尔·布伊德。 但我对select列有异议。 请让我知道我错在哪里。 我最后的疑问是 错误是:未找到列:1054字段列表中的未知列'计数(DISTINCT(unitid))'
.NET核心和ASP.NET核心到底有什么区别?
最近我们的一个jvm崩溃了。生成了一个核心文件。我想看看那个文件,找出坠机的原因。但我无法分析核心。我用jmap分析了它。然后写下命令-: jmap-转储:格式=b,文件=heap.hprof核心22234 但是我一直在例外: 从可执行核心附加到核心22234,请等待...附加到核心文件的错误: Windbg错误: OpenDumpFile失败! 我的windows系统中有核心文件。我想在那里分析
我需要帮忙。因此,我需要从AWS Lambda获得从AWS IOT Core订阅(触发)的主题名称。这是我的lambda代码: 我在云观察中看到,我正确地接收了来自MQTT的有效负载数据,并正确地触发了。所以这就是我的主题: 我需要,因为该主题将包含像机器系列的基本信息,例如'AWS/XYZ'。如何读取主题名称并从publish MQTT中读取'XYZ'?我需要得到主题名称在AWS lambda。
问题内容: 我的网站服务正在将DateTime返回到jQuery调用。服务以以下格式返回数据: 如何将其转换为JavaScript友好的日期? 问题答案: 返回的时间是自纪元以来的毫秒数。您可以这样做: 有关如何精确设置日期格式的信息,请参见http://www.w3schools.com/jsref/jsref_obj_date.asp上的完整参考。 您可以通过解析整数来去除非数字: 或应用以下