C++中整型乘以0.01快还是除以100快?

相关代码及说明请见下文:

int64_t mulFunc(int64_t a)
{return (int64_t)(a * 0.01);
}int64_t divFunc(int64_t a)
{// 注意,除数必须是整型, 例如你不能把100改为100.0。如果你改了,计算速度将大幅下降(因为这样一来将计算过程变为浮点运算)return a / 100;
}int64_t mulFunc(double a)
{return (int64_t)(a * 0.01);
}int64_t divFunc(double a)
{return a / 100;
}int64_t testMathCalc()
{// thanks: https://www.zhihu.com/question/458395216auto tot            = 10000 * 10000;auto start_sys_time = std::chrono::system_clock::now();int64_t value = 0;for (auto i = 0; i < tot; ++i){value = mulFunc(i + 5 + value);}auto current_sys_time = std::chrono::system_clock::now();auto elapsedSysTime   = current_sys_time - start_sys_time;auto lossTime         = std::chrono::duration_cast<std::chrono::microseconds>(elapsedSysTime).count();std::cout << "mulFunc lossTime: " << lossTime << " us." << std::endl;start_sys_time = std::chrono::system_clock::now();for (auto i = 0; i < tot; ++i){value = divFunc(i + 5 + value);}current_sys_time = std::chrono::system_clock::now();elapsedSysTime   = current_sys_time - start_sys_time;lossTime         = std::chrono::duration_cast<std::chrono::microseconds>(elapsedSysTime).count();std::cout << "divFunc lossTime: " << lossTime << " us." << std::endl;auto value1 = 0;double doubleValue = 10.1;for (auto i = 0; i < tot; ++i){value1 = mulFunc(i + doubleValue + value1);}current_sys_time = std::chrono::system_clock::now();elapsedSysTime   = current_sys_time - start_sys_time;lossTime         = std::chrono::duration_cast<std::chrono::microseconds>(elapsedSysTime).count();std::cout << "double mulFunc lossTime: " << lossTime << " us." << std::endl;start_sys_time = std::chrono::system_clock::now();doubleValue    = 20.2;for (auto i = 0; i < tot; ++i){value1 = divFunc(i + doubleValue + value1);}current_sys_time = std::chrono::system_clock::now();elapsedSysTime   = current_sys_time - start_sys_time;lossTime         = std::chrono::duration_cast<std::chrono::microseconds>(elapsedSysTime).count();std::cout << "double divFunc lossTime: " << lossTime << " us." << std::endl;return value + value1;/*结论: 如果是整型除以整型,则这里的测试除法速度快,实际反应出来的原则是:1. 整型乘除法的计算速度都比浮点乘除法计算速度快(计算速度可看作时钟周期数量)2. 浮点乘法速度比浮点除法速度快*/}

打印结果输出:

(整数乘以0.01) mulFunc lossTime:         314071 us.
(整数除以100)  divFunc lossTime:         176478 us.
(浮点数乘法)   double mulFunc lossTime:  508600 us.
(浮点数除法)   double divFunc lossTime:  527787 us.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何正确设计 TCP/IP 流式应用层网络协议

在我多年打黑工的职业生涯之中&#xff0c;除了在盛大游戏出身的半个老师&#xff08;做游戏服务器的&#xff09;曾今深入的教过我&#xff0c;关于正确的 TCP/IP 流式应用层网络协议的设计理念&#xff0c;前往其它公司打黑工、包括一些的开源项目&#xff0c;见识到的 TCP/I…

每个开发人员都应该知道的13个Nodejs库

Node.js&#xff0c;作为一种广受推崇的后端JavaScript环境&#xff0c;已成为众多网络开发者的首选。它不仅位列全球最流行编程语言之一&#xff0c;还通过JavaScript库的代码复用功能&#xff0c;极大地提升了项目开发效率。然而&#xff0c;面对众多选项&#xff0c;挑选合适…

mybatis快速入门-注解版

mybatis 使用注解&#xff0c;简化 xml 配置&#xff0c;汲及到动态 sql 或是多表查询&#xff0c;还是使用 xml 映射文件配置编写。(企业工作中&#xff0c;几乎全是 xml 配置&#xff0c;xml 的 sql 使用注解方式少,而类引用注解方式)。 注解 Select()&#xff1a;查询Inse…

Spring事务失效可能是哪些原因

典型回答 Spring中比较容易失效的就是通过Transactional 定义的声明式事务&#xff0c;他在以下几个场景中会导致事务失效&#xff0c;首先&#xff0c;就是Spring的Transactional是基于Spring的AOP机制实现的&#xff0c;而AOP机制又是基于动态代理实现的。那么如果代理失效了…

ArrayList与顺序表(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…

归并排序精讲

一.定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子…

C++ 虚表起源

本文会让看不见 摸不着的虚表(Vtable),虚指针(Vptr)彻底现行 本文涉及思想: C 面向对象 封装 继承 多态 中的 多态 概念解释: 虚表指针&#xff1a; 这是指向虚表&#xff08;vtable&#xff09;的指针&#xff0c;虚表中包含了该类的所有虚函数对应的地址。 虚表&#x…

外贸客户开发有用的软件

外贸客户开发过程中&#xff0c;选择合适的软件工具能够显著提升效率和效果。以下是一些对外贸客户开发非常有用的软件&#xff1a; CRM系统&#xff1a; Salesforce&#xff1a;全球领先的CRM平台&#xff0c;提供强大的客户关系管理、市场分析、销售自动化等功能&#xff0c;…

vue基础语法学习

Object.defineProperty方法的使用 // 这是一个普通的对象 let phone {} // 给这个phone新增一个属性 三个参数&#xff1a;新增属性的对象&#xff0c;新增啥属性&#xff0c;属性值&#xff0c;key value对 Object.defineProperty(phone,color,{value:太空灰, //设置属性值wr…

联合概率、条件概率、边缘概率、贝叶斯定理

事件 事件是实现的一组结果(一个或多个)。就像"扔硬币时反面是事件"&#xff0c;“从一副纸牌中选择国王(国王中的任何一个)也是事件”, “roll到5是事件等” 独立每个事件均不受其他事件影响。例: 抛硬币两次。第一次扔事件的结果不会影响第二个事件结果 相关(也…

Axure糖尿病健康管理APP原型 (知识科普/病友社区/远程医生会诊/购物商城/血糖监测/饮食监测)

作品概况 页面数量&#xff1a;共 50 页 源文件格式&#xff1a;rp格式&#xff0c;兼容 Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;医疗健康、慢病管理、糖尿病管理 作品特色 本作品为Axure糖尿病健康管理APP端原型图&#xff0c;设计规范内容清晰…

深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)

目录 成员函数种类 虚函数的实现 单一继承下的虚函数 接下来我将持续更新“深度解读《深度探索C对象模型》”系列&#xff0c;敬请期待&#xff0c;欢迎关注&#xff01;也可以关注公众号&#xff1a;iShare爱分享&#xff0c;或文章末尾扫描二维码&#xff0c;自动获得推文…

邮件接口的安全性如何保障?如何有效使用?

邮件接口故障时如何处理&#xff1f;怎么设置和配置邮件接口&#xff1f; 邮件接口作为企业内外部沟通的重要桥梁&#xff0c;其安全性显得尤为重要。那么&#xff0c;邮件接口的安全问题如何保障。AokSend将深入探讨如何保障邮件接口的安全性&#xff0c;确保企业信息的安全传…

什么是仪器校准报告?

在科学实验和工业生产中&#xff0c;仪器是一种非常重要的辅助工具&#xff0c;无论是测量数据、控制实验进程还是保证产品质量&#xff0c;仪器都发挥着至关重要的作用。为了确保仪器的准确性和稳定性&#xff0c;仪器校准报告这一概念应运而生。本文给大家详细介绍仪器校准报…

科研基础与工具(论文写作)

免责申明&#xff1a; 本文内容只是学习笔记&#xff0c;不代表个人观点&#xff0c;希望各位看官自行甄别 参考文献 科研基础与工具&#xff08;YouTube&#xff09; 学术写作句型 Academic Phrase bank 曼彻斯特大学维护的一个网站 写论文的时候&#xff0c;不不知道怎么…

简单使用Web3.js

随着区块链技术的快速发展&#xff0c;以太坊&#xff08;Ethereum&#xff09;作为其中的佼佼者&#xff0c;为开发者们提供了一个构建去中心化应用的强大平台。为了更轻松地与以太坊区块链进行交互&#xff0c;我们需要一个强大的工具&#xff0c;而Web3.js正是这样一个工具。…

速盾:cdn原理图解

CDN&#xff08;Content Delivery Network&#xff09;是一种分布式计算机网络系统&#xff0c;主要用于提供快速、可靠的网页内容传输服务。CDN的核心原理是将网站的静态资源&#xff08;如图片、视频、音频文件等&#xff09;复制到多个地理位置的服务器上&#xff0c;并通过…

【Linux】IO多路转接技术Epoll的使用

【Linux】IO多路转接技术Epoll的使用 文章目录 【Linux】IO多路转接技术Epoll的使用前言正文接口介绍工作原理LT模式与ET模式边缘触发&#xff08;ET&#xff09;水平触发&#xff08;LT&#xff09; 理解ET模式和非阻塞文件描述符ET模式epoll实现TCP服务器简单地封装epoll系统…

【软件测试】认识测试|测试岗位|软件测试和开发的区别|优秀的测试人员需要具备的素质

一、什么是测试 测试在⽣活中处处可⻅ 1.生活中的测试场景 案例⼀&#xff1a;对某款购物软件进⾏测试 *启动测试&#xff1a;点击软件图标&#xff0c;测试软件是否可以正常打开 搜索测试&#xff1a;点击输入框&#xff0c;输入关键词&#xff0c;点击搜索 商品测试&#…

给c++小白的教程4:运算

大家好&#xff0c;又见面了! 本次所说的运算将包括 算术运算符位运算符赋值运算符 算术运算符 算术运算符&#xff0c;顾名思义&#xff0c;就是用来支持数字运算的符号。 像什么加减乘除啦&#xff0c;取模啦&#xff0c;都是算术运算符 假设变量 A 的值为 10&#xff…