相关疑难解决方法(0)

你最有争议的编程意见是什么?

这绝对是主观的,但我想尽量避免它变得有争议.我认为如果人们适当地对待它可能是一个有趣的问题.

对这个问题的想法来自评论跟帖从我的回答:"你恨你喜欢的语言什么的五件事?" 问题.我争辩说C#中的类应该默认密封 - 我不会把我的推理放在这个问题上,但我可以写一个更全面的解释作为这个问题的答案.我对评论中讨论的热度感到惊讶(目前有25条评论).

那么,持有什么有争议的意见?我宁愿避免那种以相对较少的基础(例如括号放置)而变得非常宗教的东西,但是例子可能包括诸如"单元测试实际上并不十分有用"或"公共领域真的很好"之类的东西.重要的是(对我来说,无论如何)是你有理由支持你的意见.

请提出您的意见和推理 - 我鼓励人们投票支持有争议和有趣的意见,无论您是否恰好同意这些意见.

language-agnostic

363
推荐指数
237
解决办法
29万
查看次数

为什么本地数组比静态读取/写入更快?

我正在编写一些基准测试来弄清楚为什么类似的纯算法(在类中没有C++ lib/.net)在C++中比在C#中运行得快得多,即使在考虑预期的特征差异时也是如此.虽然这样做我偶然发现了令我感到困惑的这两项测试,但是有没有人知道为什么一个人比另一个慢得多?第二个(在我的机器上需要51毫秒vs 88)的唯一区别是2个数组在方法中而不是在外部声明.在这两种情况下,数组都是在开始计时之前创建的.

    const int Runs = 100;
    const int Width = 5000;
    const int Height = 5000;
    const int Size = Width * Height;


    static int[] Input = Enumerable.Range(0, Size).ToArray();
    static int[] Output = new int[Size * 2];

    static int SimpleTest()
    {
        // Removing those 2 lines and using the static arrays instead give substantially slower performance, nearly half the speed!
        int[] Input = Enumerable.Range(0, Size).ToArray();
        int[] Output = new int[Size * 2];

        Stopwatch sw = new Stopwatch();
        sw.Start(); …
Run Code Online (Sandbox Code Playgroud)

c# arrays performance

14
推荐指数
2
解决办法
2003
查看次数

标签 统计

arrays ×1

c# ×1

language-agnostic ×1

performance ×1