赋值和比较哪个更快?「转https://www.v2ex.com/t/566943」

本文通过实验对比了赋值操作与条件判断操作在执行效率上的差异,发现在整型数据处理中,直接赋值的速度明显快于带有条件判断的赋值。通过对底层指令的分析,初步解释了这一现象的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

atwoodSoInterest
V2EX  ›  编程

赋值和比较哪个更快?

  •  1  
  atwoodSoInterest · 2019-05-23 14:13:56 +08:00 · 4148 次点击
这是一个创建于 405 天前的主题,其中的信息可能已经有所发展或是发生改变。

coding 中经常遇到一种情况。对一个变量赋值,是直接赋值,还是判断之后再赋值。 体现在代码上,大概是下面这种情况( i 和 num 都是 int ): if (i > 0) num = i; 或者 num = i; 我的疑问是到底哪个更快,自己用 C#做了测试:在循环一亿次的情况下,直接赋值速度更快。但是判断赋值会有部分是执行了 if 中的代码的,所以会导致了实验不纯粹。

然后我又用下面的代码测试了下,单纯的对比赋值和比较的效率

    static void Main(string[] args)
    {
        int num;            
        Console.WriteLine(DateTime.Now.ToString("mm:ss.fff"));
        for (int i = 0; i < 100000000; i++)
        {
            if (i > 1000)
            {
                //num = int.MaxValue;
            }
        }
        Console.WriteLine(DateTime.Now.ToString("mm:ss.fff"));
        Console.WriteLine("---");
        Console.WriteLine(DateTime.Now.ToString("mm:ss.fff"));
        for (int i = 0; i < 100000000; i++)
        {
        num = int.MaxValue;                
    }
    Console.WriteLine(DateTime.Now.ToString("mm:ss.fff"));
    Console.ReadLine();
}

结果发现还是直接赋值更快,在我本机上,判断执行一亿次速度是 226ms,赋值执行一亿次速度是 168ms。(大家也可以自己去 https://try.dot.net/试试)

最后从结果上来看,在整型的情况下,赋值是会比判断快的。

但是问题就来了,为什么呢? 我自己脑洞了一个答案,赋值到中间语言的时候就是 mov,比较到中间语言的时候是 cmp,mov 就直接把 01 丢到变量里去就可以了;但是 cmp 的话就要做减法,要做借位啊这那的操作,所以是赋值会更快。

强行解释了一波,感觉不是很信服。所以还请大家集思广益,破除疑惑~

好的,根据您的需求,我可以为您提供一个发送POST请求的Vue.js示例代码,并将响应结果显示在HTML中的span标签中。以下是示例代码: ```html <template> <div> <button @click="sendPostRequest">发送POST请求</button> <span>{{response}}</span> </div> </template> <script> export default { data() { return { response: '' } }, methods: { async sendPostRequest() { try { const headers = { 'Content-Type': 'application/json' // 定义请求头 } const body = { // 定义请求体 query: "Hello world", num_samples: 1, length: 20 } const response = await fetch('https://gpt.bcwhkj.cn/api/v2.Gptliu/search', { method: 'POST', headers: headers, body: JSON.stringify(body) }) const data = await response.json() this.response = data.response[0] // 将响应结果显示在HTML中 } catch (error) { console.error(error) } } } } </script> ``` 在上面的代码中,我们定义了一个按钮一个span标签,用于触发发送POST请求显示响应结果。在Vue.js的脚本部分,我们使用了async/await语法来发送异步请求,并将响应结果赋值给response变量,以便在HTML中显示。注意,我们在请求头中定义了Content-Type为application/json,这是因为我们的请求体是JSON格式的数据。我们的请求体中传入了query、num_sampleslength参数,并将请求发送到了目标接口https://gpt.bcwhkj.cn/api/v2.Gptliu/search。最后,我们从响应数据中获取了response字段的第一个值,并将其赋值给response变量,以在HTML中显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值