C语言寄存器变量和内存变量的操作速度对比

C语言寄存器变量和内存变量的操作速度对比

实验代码

#include <windows.h>
#include <stdio.h>

int test_reg(const unsigned long n)
{
    const int t1 = GetTickCount();
    for (register unsigned long i = 0; i < n; i++)
    {
    }
    const int t2 = GetTickCount();
    return t2 - t1;
}

int test_nonreg(const unsigned long n)
{
    const int t1 = GetTickCount();
    for (unsigned long i = 0; i < n; i++)
    {
    }
    const int t2 = GetTickCount();
    return t2 - t1;
}

int main()
{
    unsigned long n_0 = 1 << 10;
    for (unsigned long n = n_0; n < 1e9; n = n << 1)
    {
        printf("non-reg with n=%ld: %d\n", n, test_nonreg(n));
        printf("reg with n=%ld: %d\n", n, test_reg(n));
    }
    return 0;
}

实验输出

non-reg with n=1024: 0
reg with n=1024: 0
non-reg with n=2048: 0
reg with n=2048: 0
non-reg with n=4096: 0
reg with n=4096: 0
non-reg with n=8192: 0
reg with n=8192: 0
non-reg with n=16384: 0
reg with n=16384: 0
non-reg with n=32768: 0
reg with n=32768: 0
non-reg with n=65536: 0
reg with n=65536: 0
non-reg with n=131072: 0
reg with n=131072: 0
non-reg with n=262144: 0
reg with n=262144: 0
non-reg with n=524288: 16
reg with n=524288: 0
non-reg with n=1048576: 0
reg with n=1048576: 0
non-reg with n=2097152: 0
reg with n=2097152: 0
non-reg with n=4194304: 16
reg with n=4194304: 0
non-reg with n=8388608: 15
reg with n=8388608: 0
non-reg with n=16777216: 47
reg with n=16777216: 0
non-reg with n=33554432: 63
reg with n=33554432: 16
non-reg with n=67108864: 125
reg with n=67108864: 47
non-reg with n=134217728: 250
reg with n=134217728: 94
non-reg with n=268435456: 531
reg with n=268435456: 172
non-reg with n=536870912: 1093
reg with n=536870912: 360

实验结论

寄存器变量操作约比内存变量操作快三倍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值