.net - Int32 vs Int64 在 64 位平台上的性能?

标签 .net

我的问题比较简单。在 32 位平台上,最好使用 Int32,而不是短或长,因为 cpu 一次处理 32 位。那么在 64 位架构上,这是否意味着使用 longs 来提高性能会更快?我创建了一个快速而肮脏的应用程序,它复制 int 和 long 数组来测试基准。这是代码(我确实警告过它很脏):

static void Main(string[] args)
    {
        var lar = new long[256];

        for(int z = 1; z<=256;z++)
        {
            lar[z-1] = z;
        }
        var watch = DateTime.Now;
        for (int z = 0; z < 100000000; z++)
        {
            var lard = new long[256];
            lar.CopyTo(lard, 0);

        }
        var res2 = watch - DateTime.Now;

        var iar = new int[256];

        for (int z = 1; z <= 256; z++)
        {
            iar[z - 1] = z;
        }

        watch = DateTime.Now;

        for (int z = 0; z < 100000000; z++)
        {
            var iard = new int[256];
            iar.CopyTo(iar, 0);

        }

        var res1 = watch - DateTime.Now;
        Console.WriteLine(res1);
        Console.WriteLine(res2);


    }

它产生的结果使 long 大约是 int 的 3 倍。这让我很好奇我是否应该开始使用 longs 进行计数器等。我也做了一个类似的计数器测试,long 的速度明显更快。有人对此有任何意见吗?我也明白即使多头更快,它们仍然会占用两倍的空间。

最佳答案

不可以。在 32 位 CPU 上执行 64 位需要更长的时间,因为 CPU 一次只能处理 32 位。 64 位 CPU 将忽略丢失的 32 位。

另外,尽量不要抢先优化太多。仅在存在明显瓶颈时进行优化。

关于.net - Int32 vs Int64 在 64 位平台上的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375956/

相关文章:

c# - 将字符串拆分(不解析)为命令行参数 C#

c# truthy 和 falsy 值

c# - 尝试使用 C# 从 url 解析 JSON

c# - 根据窗体大小在窗体上定位控件

c# - 批量插入记录到 SQL Server 数据库

.net - .NET 程序集大小会影响性能吗?

c# - 动态查询: Change table name in LINQ-to-Entities query

.net - 如何修复 Unix LocalMachine X509Store 仅限于 Root 和 CertificateAuthority 存储错误

c# - 使用自定义矩形裁剪图像

c# - 单个实例并在系统托盘中通知