小编use*_*459的帖子

在x64平台上,Math.Round的性能显着下降

我注意到使用Math.Round将double转换为int同时将x64与x86相比较时,性能下降非常显着(~15x).我在Core i7 3770K上的64位Windows上进行了测试.任何人都可以复制它吗?有这么好的理由吗?也许是一些奇怪的边界条件?

仅供参考,我将Math.Round(Test1)与2个近似值进行比较:条件转换(Test2)和6755399441055744技巧(Test3).

运行时间是:

---------------------------
|       |   x86  |  x64   |
|-------+--------+--------|
| Test1 | 0,0662 | 0,9975 |
| Test2 | 0,1517 | 0,1513 |
| Test3 | 0,1966 | 0,0978 |
---------------------------
Run Code Online (Sandbox Code Playgroud)

这是基准代码:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace MathRoundTester
{
    class Program
    {
        private const int IterationCount = 1000000;

        private static int dummy;
        static void Main(string[] args)
        {
            var data = new double[100];
            var rand = new Random(0);
            for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

.net c# floating-point performance

13
推荐指数
2
解决办法
1115
查看次数

如何使用Visual Studio Text Visualizer进行自定义类型?

在Visual Studio 2015(以及某些旧版本)中,在调试C#代码时,可以string通过带有放大镜图标的下拉列表在各种可视化工具(文本,XML,HTML,JSON)中显示变量的值.例如,这也适用于某些非字符串类型System.Xml.Linq.XElement.是否可以使用这些内置可视化工具来显示我自己的自定义类型变量的值?

语境:

我需要能够快速检查复杂自定义类型的状态,该类型只能在多行文本环境中可接受地显示.

c# debuggervisualizer visual-studio

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