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 1024


int main()
 {
    char buffer[SIZE];
    char zeroed_buffer[SIZE];
    char set_value = 'A';

    // 使用bzero填充buffer
    clock_t start = clock();
    bzero(buffer, SIZE);
    clock_t end = clock();
    double bzero_time = (double)(end - start) / CLOCKS_PER_SEC;

    // 使用memset填充buffer
    clock_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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS 学习应用篇(九)ROS中launch文件的实现

launch文件就好比一个封装好的命令库&#xff0c;我们按照在终端中输入的代码指令&#xff0c;全部按照launch语言格式封装在一个launch文件中&#xff0c;这样以后执行的时候&#xff0c;就可以不用开很多终端&#xff0c;一条一条输入代码指令。 lauch文件的语言风格很想我之…

通信原理板块——纠错编码最小码距与纠错能力的计算

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 对纠错编码的最小码距d0与编码的检…

数据结构【DS】图的基本概念

定义 完全图(简单完全图) 完全无向图&#xff1a;边数为&#x1d427;&#x1d427;−&#x1d7cf;&#x1d7d0;完全有向图&#xff1a;边数为 &#x1d427;(&#x1d427;−&#x1d7cf;) 子图、生成子图 G的子图&#xff1a;所有的顶点和边都属于图G的图 G的生成子图…

PHP字符串函数的解析

在PHP中&#xff0c;字符串是一种常见的数据类型&#xff0c;用于存储和操作文本数据。PHP提供了丰富的字符串函数&#xff0c;用于执行各种字符串操作&#xff0c;包括截取、连接、替换、搜索等。在这篇文章中&#xff0c;我们将深入解析一些常用的PHP字符串函数&#xff0c;以…

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

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

【图解算法】- 快乐数还能这么解?

一 - 前言 介绍&#xff1a;大家好啊&#xff0c;我是hitzaki辰。 社区&#xff1a;&#xff08;完全免费、欢迎加入&#xff09;日常打卡、学习交流、资源共享的知识星球。 自媒体&#xff1a;我会在b站/抖音更新视频讲解 或 一些纯技术外的分享&#xff0c;账号同名&#xff…

PPT基础:合并形状

目录 合并形状功能详解合并形状使用文字转形状图表转形状 合并形状功能详解 形状&#xff1a;并不局限于ppt内给定的图形&#xff0c;也并不全是图形 &#xff08;1&#xff09;所在位置&#xff1a;选中图形后>>>形状格式>>>最左边 &#xff08;2&#x…

Canal+Kafka实现MySQL与Redis数据同步(二)

CanalKafka实现MySQL与Redis数据同步&#xff08;二&#xff09; 创建MQ消费者进行同步 在application.yml配置文件加上kafka的配置信息&#xff1a; spring:kafka:# Kafka服务地址bootstrap-servers: 127.0.0.1:9092consumer:# 指定一个默认的组名group-id: consumer-group…

Bootloader——预编程流程

预编程目录 前言一、预编程步骤1.1 切换到扩展会话1.2 检查刷写前提条件整车ECU进入扩展会话(补充)1.3 停用故障码存储功能1.4 停止通信(一般报文或网络管理报文)前言 刷写过程定义了刷写前、刷写中、刷写后三个阶段。 一、预编程步骤 预编程步骤用来做刷写前的CAN网络准…

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

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

我终于体会到了:代码竟然不可以运行,为什么呢?代码竟然可以运行,为什么呢?

废话不多说&#xff0c;直接上图 初看只当是段子&#xff0c;再看已是段中人 事情经过&#xff1a; 我在写动态顺序表的尾插函数时&#xff0c;写出了如下代码&#xff0c;可以跑&#xff0c;但是这段代码有一个bug暂时先不提 //动态顺序表的尾插 void SLPushBack(SL* psl, …

【C++历练之路】list的重要接口||底层逻辑的三个封装以及模拟实现

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; 在C的世界中&#xff0c;有一种数据结构&#xff0c;它不仅像一个神奇的瑰宝匣&#xff0c;还像一位能够在数据的海洋中航行的智慧舵手。这就是C中的list&#xff0c;一个引人入胜的工具…

数据结构【DS】树的性质

度为m的树 m叉树 至少有一个节点的度m 允许所有节点的度都<m 一定是非空树&#xff0c;至少有m1个节点 可以是空树 节点数 总度数 1m叉树&#xff1a; 高度为h的m叉树 节点数最少为&#xff1a;h具有n个结点的m叉树 最大高度&#xff1a;n度为m的树&#xff1a; 具有…

shell脚本学习笔记07

如何让shell实现 可选择性执行 的功能 用了while进行循环&#xff0c;是死循环&#xff0c;在循环时&#xff0c;使用case进行使用哪个脚本进行执行。使用clear进行每一次操作前的清屏&#xff0c;eof代表输入这个会显示目录。read用来读取输入的值&#xff0c;如果不输入值不会…

ScalableMap

问题引入 传统方案在处理线性地图元素时忽略了其结构性约束&#xff0c;建图距离太近 方法 简介 结构引导BEV特征提取 一种新的层次稀疏地图表示方法 设计渐进解码机制和基于此表示的监督策略 组件 结构引导BEV表征 通过车载摄像头捕捉的环绕视图图像&#xff0c;利用Res…

保险保险保险保险保险QAQ

该买保险啦&#xff01; 一、百万医疗险&#xff1a;事后报销医疗费用1、蓝医保 太平洋保险2、长相安 平安健康3、金医保 人寿保险4、好医保 人保健康 二、重疾险&#xff1a;确诊后一次性给付1、达尔文7号 国联人寿保险公司2、超级玛丽9号 君龙人寿3、守卫者6号 国联人寿保险公…

​软考-高级-系统架构设计师教程(清华第2版)【第7章 系统架构设计基础知识(263~285)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第7章 系统架构设计基础知识&#xff08;263~285&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

全链路监控--pinpoint

一、pinpoint架构原理 架构组成 Pinpoint Agent:和自己运行的应用关联起来的探针 Pinpoint Collector:收集各种性能数据 Pinpoint-Web: 将收集到的数据显成为 WEB网页显示 HBase Storage: 存储收集到的数据 工作原理 pinpoint的核心思想是在各个服务节点之间彼此调用时&a…

预定义宏指令

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {printf("%s\n", __FILE__);printf("%d\n", __LINE__);printf("%s\n", __DATE__);printf("%s\n", __TIME__);return 0; } 运行结果&#xff1a;

记录将excel表无变形的弄进word里面来

之前关于这个问题记录过一篇文章&#xff1a; 将excel中的表快速复制粘贴进word中且不变形-CSDN博客 今天记录另外一种方法&#xff1a;举例表述&#xff0c;excel表如图&#xff1a; 按F12&#xff0c;出现“另存为...”对话框&#xff0c;选择“单个文件网页”&#xff0c;…