memset和bzero性能分析

首先,我们需要了解bzero和memset的功能。bzero是一个非标准函数,用于将一块内存区域的内容设置为0。它的原型如下:void *bzero(void *s, size_t n);其中,s是要设置的内存区域的起始地址,n是要设置的字节数。memset是一个函数,用于将一块内存区域的内容设置为指定的值。它的原型如下:void *memset(void *s, int c, size_t n);其中,s是要设置的内存区域的起始地址,c是要设置的值(以整数形式表示),n是要设置的字节数。接下来,我们可以通过以下代码来比较bzero和memset的性能:
#include <stdio.h>
#include <time.h>
#include <string.h>#define SIZE 1024 * 1024
//#define SIZE 1024 * 512 
//#define SIZE 1024 * 256
//#define SIZE 1024 * 128
//#define SIZE 1024 * 64
//#define SIZE 1024 * 32
//#define SIZE 1024 * 16
//#define SIZE 1024int main(){char buffer[SIZE];char zeroed_buffer[SIZE];char set_value = 'A';// 使用bzero填充bufferclock_t start = clock();bzero(buffer, SIZE);clock_t end = clock();double bzero_time = (double)(end - start) / CLOCKS_PER_SEC;// 使用memset填充bufferclock_t start2 = clock();memset(buffer,set_value, SIZE);clock_t end2 = clock();double memset_time = (double)(end2 - start2) / CLOCKS_PER_SEC;printf("\nbzero time: %f seconds\n", bzero_time);printf("\nmemset time: %f seconds\n", memset_time);return 0;
}
运行结果:
1MB
512KB
256KB
128KB
64KB

32KB
16KB
2KB
1KB
这段代码首先定义了一个大小从1KB至1MB的字符数组buffer,然后分别使用bzero和memset对其进行填充。针对每个不同大小的字符数组,通过计算两个操作的执行时间,我们可以得出它们之间的性能差异。

结论:

我们根据本示例的代码运行得到的结果可以看出:

(1)字符数组大小为2KB的时候,memset和bzero两者的性能相同;

(2)字符数组的大小小于2KB的时候,bzero性能高于memset;

(3)字符数组的大小大于2KB的时候,bzero性能低于memset。

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

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

相关文章

C++虚函数(定义,作用,原理,案例)

一.定义&#xff1a; C的虚函数是在父类(基类)中声明的的函数&#xff0c;它可在子类(派生类)中重写。二.作用 虚函数的目的是实现多态性&#xff0c;即在程序运行时根据对象的实际类型确定调用哪个函数。三.使用方法&#xff1a; 在基类中声明虚函数时&#xff0c;需要在函…

分组表,分桶表

1&#xff0c;启动Hive服务 &#xff08;1&#xff09;启动HiveServer2服务 nohup hive --service metastore &&#xff08;2&#xff09;启动Metastore服务 nohup hive --service hiveserver2 &&#xff08;3&#xff09;查看进程信息 lsof -i:100002&#xff0c;…

037、目标检测-SSD实现

之——简单实现 目录 之——简单实现 杂谈 正文 1.类别预测层 2.边界框预测 3.多尺度输出联结做预测&#xff08;提高预测效率&#xff09; 4.多尺度实现 5.基本网络块 6.完整模型 杂谈 原理查看&#xff1a;037、目标检测-算法速览-CSDN博客 正文 1.类别预测层 类别…

JavaScript实现飞机发射子弹详解(内含源码)

JavaScript实现飞机发射子弹 前言实现过程源码展示源码讲解HTML结构CSS结构js结构 前言 文本主要讲解如何利用JavaScript实现飞机发射子弹&#xff0c;实现过程以及源码讲解。实现效果图如下&#xff1a; 实现过程 首先&#xff0c;找到飞机和子弹的UI图&#xff0c;gif图最…

五个必知的速率限制策略,以最大化流量流动

速率限制是一种策略&#xff0c;我们在工作中常常使用&#xff0c;它定义了系统在设定的时间框架内可以处理的最大请求数量。 速率限制定义了系统在指定时间段内可以处理的最大请求数量。 Image.png 速率限制是一种策略&#xff0c;我们在工作中常常使用&#xff0c;它定义了…

html综合笔记:设计实验室主页

&#xff11; 主页来源及效果 Overview - Lab Website Template docs (gitbook.io) greenelab/lab-website-template: An easy-to-use, flexible website template for labs (github.com) 2 创建网页 3 主要的一些file 3.1 index.md 主页面 3.1.1 intro 3.1.2 highlight …

斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语)

假设函数定义 假设函数&#xff0c;猜一个 x->y 的类型&#xff0c;比如 y ax b&#xff0c;随后监督学习的任务就是找到误差最低的 a 和 b 参数 有时候我们可以定义 x0 1&#xff0c;来让假设函数的整个表达式一致统一 如上图是机器学习中的一些术语 额外的符号&#xf…

《视觉SLAM十四讲》-- 回环检测

文章目录 10 回环检测10.1 概述10.1.1 回环检测的意义10.1.2 回环检测的方法10.1.3 准确率和召回率 10.2 词袋模型10.3 字典10.3.1 字典的结构10.3.2 实践&#xff1a;创建字典 10.4 相似度计算10.4.1 理论部分10.4.2 实践&#xff1a;相似度的计算 10.5 实验分析与评述 10 回环…

PCL 计算一条射线与一个三角形的交点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里我们使用点向式分别表示一个射线与一个三角形,如下图所示: 其中,平面的法向量 N N N可以由三角形两条边的叉乘来计算,点R0到平面的法向距离

Linux(Ubuntu)安装JDK环境

系统环境 Ubuntu20.04 下载JDK压缩包 前往Oracle官网进行后续下载或单击下载JDK压缩包 下拉找到JDK8&#xff0c;在Linux板块下选择适配系统架构的压缩包文件(后缀为tar.gz)&#xff0c;系统架构可通过uname -m命令查看 安装JDK 安装环境通常放在/usr/local下&#xff0c;进入…

CBAM注意力机制(结构图加逐行代码注释讲解)

学CBAM前建议先学会SEnet&#xff08;因为本篇涉及SEnet的重合部分会略加带过&#xff09;->传送门 ⒈结构图 下面这个是自绘的&#xff0c;有些许草率。。。 因为CBAM机制是由通道和空间两部分组成的&#xff0c;所以有这两个模块&#xff08;左边是通道注意力机制&#…