所以,我在我接下来的一段代码Main()方法
for (int x = 0; x < 100; x++) // to mimic BenchmarkDotnet runs
for (int y = 0; y < 10000; y++)
LogicUnderTest();
Run Code Online (Sandbox Code Playgroud)
接下来,我正在测试以下课程
[MemoryDiagnoser, ShortRunJob]
public class TestBenchmark
{
[Benchmark]
public void Test_1()
{
for (int i = 0; i < 10000; i++)
LogicUnderTest();
}
}
Run Code Online (Sandbox Code Playgroud)
运行后Main()下dotMemory了6分钟左右,我收到下面的结果
该应用程序从开始10Mb到14Mb。
我看到我已经2.6GB分配了。什么?似乎一点也不好。另外,我看不到Gen1和Gen2列。这是否意味着代码没有在其中分配任何内容,所以没有任何显示?
如何解释结果?看起来完全可以DotMemory,但不能接受BenchmarkDotNet。我是新手,BenchmarkDotnet将对有关结果的任何信息有所帮助。
PS。LogicUnderTest() …
JavaScript对我来说是一个启示.我认为它会像C#,Java等其他类型的经典语言.但事实并非如此."动态世界"艰难且难以预测.当我读到函数可以接收到你想要的任意数量的参数时,我感到很惊讶.没有任何错误!我完全不喜欢它.我想要更多"静态",我想要某种编译时错误!
我的问题是:我需要担心吗?如果传递的参数数量超过特定函数的预期值,抛出异常是一种好习惯吗?
function foo(one, two, three)
{
// Is it good?
if(arguments.length > arguments.callee.length)
throw new Error("Wrong quantity of arguments in " + arguments.callee.name + "()");
/* Stuff */
}
foo(1, 2, 3, 4); // -> Error
foo(1, 2, 3); // -> OK
Run Code Online (Sandbox Code Playgroud)
我应该关注它吗?
提前致谢!
我最近刚刚研究了 Roslyn 编译器的东西,我想知道一些可能性。我正在尝试使用features/tuples分支从 Roslyn 存储库构建 Roslyn 编译器,并替换VS15Preview\MSBuild\15.0\Bin文件夹中所需的 DLL 。但是当我替换 DLL 并构建控制台应用程序项目时,我收到以下错误消息
严重性代码描述项目文件行抑制状态
错误 无法运行指定的任务可执行文件“csc.exe”。无法加载文件或程序集“Microsoft.CodeAnalysis.CSharp,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
我尝试替换的文件:Microsoft.CodeAnalysis.dll,Microsoft.CodeAnalysis.Csharp.dll和csc.exe.
是否可以为 C# 构建自定义 Roslyn 编译器并在 VS15 预览版中替换它?