小编Sem*_*ble的帖子

如何解释BenchmarkDotNet和dotMemory的结果?

所以,我在我接下来的一段代码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分钟左右,我收到下面的结果

在此处输入图片说明

该应用程序从开始10Mb14Mb

但是当我进行BenchmarkDotnet测试时我得到了 在此处输入图片说明

我看到我已经2.6GB分配了。什么?似乎一点也不好。另外,我看不到Gen1Gen2列。这是否意味着代码没有在其中分配任何内容,所以没有任何显示?

如何解释结果?看起来完全可以DotMemory,但不能接受BenchmarkDotNet。我是新手,BenchmarkDotnet将对有关结果的任何信息有所帮助。

PS。LogicUnderTest() …

.net c# benchmarking benchmarkdotnet dotmemory

3
推荐指数
2
解决办法
426
查看次数

在JavaScript中传递给函数的参数量

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)

我应该关注它吗?

提前致谢!

javascript

2
推荐指数
1
解决办法
199
查看次数

让 MSBuild 在 VS15 Preview 中使用新的 Roslyn 编译器

我最近刚刚研究了 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.dllcsc.exe.

是否可以为 C# 构建自定义 Roslyn 编译器并在 VS15 预览版中替换它?

.net c# visual-studio roslyn roslyn-code-analysis

1
推荐指数
1
解决办法
1128
查看次数