snprintf/strncpy/strlcpy速度测试
速度测试代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/time.h> #include <sched.h> #define COUNT 10000000 //#define COUNT 10000000 #define MILLION 1000000Lsize_t VisCore_Strlcpy(char *dst, const char *src, size_t n) {const char *src0 = src;char dummy[1];if (!n) {dst = dummy;}else {--n;} while ((*dst = *src) != 0) {if (n) {--n;++dst;}++src; }return src - src0; } int main(void) {int i;long long tdif;struct timeval tend, tstart;char data[1024];char *buf1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""aaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc";char *buf = "aaaaaaaaaaaaaaaaaaaaaaaa";if (gettimeofday(&tstart, NULL) == -1) {fprintf(stderr, "Failed to get start time\n");return 1;} #if 1 for (i = 0; i < COUNT; i++) {//snprintf(data, sizeof(data), "%s", buf);//snprintf(data, sizeof(data), "%s", buf);//strlcpy(data, buf, sizeof(data)); VisCore_Strlcpy(data, buf, sizeof(data));//strncpy(data, buf, sizeof(data)); } #endif if (gettimeofday(&tend, NULL) == -1) {fprintf(stderr, "Failed to get end time\n");return 1;}tdif = MILLION * (tend.tv_sec - tstart.tv_sec) + (tend.tv_usec - tstart.tv_usec);//printf("nanosleep() time is %lld us\n", tdif);printf("nanosleep() time is %f us\n", tdif*1.0/COUNT);//printf("nanosleep() time is %lld us\n", tdif/COUNT);return 0; }
在hi3520a中的测试速度结果:
源、目标长度大小 相关函数 |
dst:24 src:678 | dst:680 src:678 | dst:1024 src:678 | dst:1024 src:24 |
strncpy(us) O2 优化 | 0.037871 | 2.408301 | 3.155248 | 2.264491 |
snprintf(us) O2 优化 | 3.061944 | 3.320676 | 3.311918 | 1.46123 |
strlcpy(us) O2 优化 | 3.681469 | 3.681542 | 3.681374 | 0.174848 |
VisCore_Strlcpy(us) O2 优化 | 2.934305 | 2.571704 | 2.57172 | 0.108673 |
源、目标长度大小 相关函数 |
dst:24 src:678 | dst:680 src:678 | dst:1024 src:678 | dst:1024 src:24 |
strncpy(us) O2 优化 | 0.037871 | 2.408301 | 3.155248 | 2.264491 |
snprintf(us) O2 优化 | 3.061944 | 3.320676 | 3.311918 | 1.46123 |
strlcpy(us) O2 优化 | 3.681469 | 3.681542 | 3.681374 | 0.174848 |
VisCore_Strlcpy(us) O2 优化 | 2.934305 | 2.571704 | 2.57172 | 0.108673 |
strlcpy(us) Os 优化 | 3.684127 | 3.684136 | 3.68421 | 0.165779 |
VisCore_Strlcpy(us) Os 优化 | 3.678672 | 3.678688 | 3.678671 | 0.185096 |
VisCore_Strlcpy(us) O0 默认 | 16.902501 | 18.300108 | 18.302474 | 0.710118 |
参考博文:
[原创]snprintf与strncpy效率对比
aa
转载于:https://www.cnblogs.com/jingzhishen/p/6164530.html
snprintf/strncpy/strlcpy速度测试相关推荐
- 【Android 安装包优化】WebP 图片格式性能测试 ( 测试 WebP 图片解码速度 | 测试 WebP 图片编码速度 )
文章目录 一.测试 WebP 图片解码速度 二.测试 WebP 图片编码速度 三.参考资料 测试结果 : WebP 格式图片 , 解码快 , 编码慢 , 占用空间小 ; 在解码速度上 , WebP 格 ...
- java文件复制速度_java中文件复制得速度测试
//需要将apache开发的两个插件包拷到lib目录下:commons-fileupload-1.2.2.jar commons-io-2.0.1.jar package com.nay.servl ...
- 【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试
xilinx usb下载器 下载速度极限设置以及高速JTAG-SMT2(HS1 HS2 HS3)和DLC9 DLC10 速度测试 对于一款xilinx的下载器,研发和烧录以及boss都最关心下载速度的 ...
- linux ip brd不一致_3 个方便的命令行网速度测试工具 | Linux 中国
用这三个开源工具检查你的互联网和局域网速度.-- Ben Nuttall 能够验证网络连接速度使您可以控制计算机.使您可以在命令行中检查互联网和网络速度的三个开源工具是 Speedtest.Fast ...
- StringBuilder 和 String拼接10万个字符串的速度测试差别太大了
/*** StringBuilder 和 String拼接10万个字符串的速度测试差别太大了* String耗时毫秒: 32693* StringBuilder耗时毫秒: 16*/ public cl ...
- strcpy ,strncpy ,strlcpy地用法
strcpy ,strncpy ,strlcpy地用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...
- 阿里云各个地域节点速度测试(测试点到阿里云各站点)
阿里云各个地域节点速度测试 http://aliyun.nagekuai.com/ 测试节点 阿里云速度测试提供阿里云ECS云服务器大陆地域节点测速:华北1(青岛).华北2(北京).华北3(张家口). ...
- 你知道怎样进行芝麻动态vps速度测试吗?
你知道怎样进行vps速度测试吗?芝麻动态vps 1.综合性能测试 打开Xshell或者Putty,输入下列命令: wget -qO- bench.sh | bash 2.speedtest测速 输入命 ...
- 手机闪存速度测试工具,AndroBench
手机闪存速度测试工具,AndroBench 转载于:https://www.cnblogs.com/runliuv/p/8135165.html
- usb3.0传输速度测试软件,USB3.0与USB2.0的传输速度对比测试
USB 3.0对多数电脑爱好者都已经不陌生,发布也有段时间了,多数朋友大概都还只知道USB 3.0接口传送数据能力比USB 2.0接口快很多,但到底有多快,可能就很少人知道了.下面小编就为大家介绍一下 ...
最新文章
- python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法
- 如何处理SAP HANA Web-Based Development Workbench的403 Forbidden错误
- php中获取系统信息的方法
- 黑圈数字符号0到50复制_电脑上怎么打出特殊符号「收藏」
- 数据工作-百度统计初体验
- linux远程连接交换机,思科:路由器、交换机 ssh远程连接
- 矩阵分解在推荐系统中的应用:NMF和经典SVD实战
- 如何利用缓存提高asp.net网站访问速度
- Si4463/Si4432/Si4438无线射频RF方案
- Web基础配置篇(十三): ELK集群搭建
- 对讲机写频教程以(TCL-HT9为例)
- electron-mac应用-代码签名及公证(教科书式操作-亲测有效)
- 通俗易懂区块链系列——双重支付/双花支付
- error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
- 微信小程序电影列表(一)
- 【C++】DFS——计算土地上水洼的数量
- Jetson TX2 之 JetPack 3.0 安装小记
- php压缩中文文件,phpzip压缩中文文件时候出现压缩无大小或无法压缩
- android图片资源加密解密,Android Glide实现图片加密解密 自定义格式
- 「停止更新」黑苹果安装教程:联想小新锐7000 i5-7300HQ HD630 GTX1050
热门文章
- NPAPI最简单的代码
- 联合国应考虑建设第二总部
- 亲身经历:如何判断一个字符在a/z之前?
- 安卓显示视频画面的动画效果及代码
- 免费文件分发服务器,文件分发服务器 AWS CloudFront(CDN)使用入门-以S3为例 Lebal:Research...
- linux 添加软连接、查看软连接、增加文件的执行权限
- mysql资源限制_超出了MariaDB / MySQL资源限制
- java是否安装outlook,Java程序定期检查ms Outlook是否有新邮件
- vs的windows应用程序上的鼠标为什么一直是加载状态?_了解 JavaScript 应用程序中的内存泄漏...
- 《调试软件》作者主页