速度测试代码:

#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速度测试相关推荐

  1. 【Android 安装包优化】WebP 图片格式性能测试 ( 测试 WebP 图片解码速度 | 测试 WebP 图片编码速度 )

    文章目录 一.测试 WebP 图片解码速度 二.测试 WebP 图片编码速度 三.参考资料 测试结果 : WebP 格式图片 , 解码快 , 编码慢 , 占用空间小 ; 在解码速度上 , WebP 格 ...

  2. java文件复制速度_java中文件复制得速度测试

    //需要将apache开发的两个插件包拷到lib目录下:commons-fileupload-1.2.2.jar  commons-io-2.0.1.jar package com.nay.servl ...

  3. 【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试

    xilinx usb下载器 下载速度极限设置以及高速JTAG-SMT2(HS1 HS2 HS3)和DLC9 DLC10 速度测试 对于一款xilinx的下载器,研发和烧录以及boss都最关心下载速度的 ...

  4. linux ip brd不一致_3 个方便的命令行网速度测试工具 | Linux 中国

    用这三个开源工具检查你的互联网和局域网速度.-- Ben Nuttall 能够验证网络连接速度使您可以控制计算机.使您可以在命令行中检查互联网和网络速度的三个开源工具是 Speedtest.Fast ...

  5. StringBuilder 和 String拼接10万个字符串的速度测试差别太大了

    /*** StringBuilder 和 String拼接10万个字符串的速度测试差别太大了* String耗时毫秒: 32693* StringBuilder耗时毫秒: 16*/ public cl ...

  6. strcpy ,strncpy ,strlcpy地用法

    strcpy ,strncpy ,strlcpy地用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...

  7. 阿里云各个地域节点速度测试(测试点到阿里云各站点)

    阿里云各个地域节点速度测试 http://aliyun.nagekuai.com/ 测试节点 阿里云速度测试提供阿里云ECS云服务器大陆地域节点测速:华北1(青岛).华北2(北京).华北3(张家口). ...

  8. 你知道怎样进行芝麻动态vps速度测试吗?

    你知道怎样进行vps速度测试吗?芝麻动态vps 1.综合性能测试 打开Xshell或者Putty,输入下列命令: wget -qO- bench.sh | bash 2.speedtest测速 输入命 ...

  9. 手机闪存速度测试工具,AndroBench

    手机闪存速度测试工具,AndroBench 转载于:https://www.cnblogs.com/runliuv/p/8135165.html

  10. usb3.0传输速度测试软件,USB3.0与USB2.0的传输速度对比测试

    USB 3.0对多数电脑爱好者都已经不陌生,发布也有段时间了,多数朋友大概都还只知道USB 3.0接口传送数据能力比USB 2.0接口快很多,但到底有多快,可能就很少人知道了.下面小编就为大家介绍一下 ...

最新文章

  1. python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法
  2. 如何处理SAP HANA Web-Based Development Workbench的403 Forbidden错误
  3. php中获取系统信息的方法
  4. 黑圈数字符号0到50复制_电脑上怎么打出特殊符号「收藏」
  5. 数据工作-百度统计初体验
  6. linux远程连接交换机,思科:路由器、交换机 ssh远程连接
  7. 矩阵分解在推荐系统中的应用:NMF和经典SVD实战
  8. 如何利用缓存提高asp.net网站访问速度
  9. Si4463/Si4432/Si4438无线射频RF方案
  10. Web基础配置篇(十三): ELK集群搭建
  11. 对讲机写频教程以(TCL-HT9为例)
  12. electron-mac应用-代码签名及公证(教科书式操作-亲测有效)
  13. 通俗易懂区块链系列——双重支付/双花支付
  14. error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
  15. 微信小程序电影列表(一)
  16. 【C++】DFS——计算土地上水洼的数量
  17. Jetson TX2 之 JetPack 3.0 安装小记
  18. php压缩中文文件,phpzip压缩中文文件时候出现压缩无大小或无法压缩
  19. android图片资源加密解密,Android Glide实现图片加密解密 自定义格式
  20. 「停止更新」黑苹果安装教程:联想小新锐7000 i5-7300HQ HD630 GTX1050

热门文章

  1. NPAPI最简单的代码
  2. 联合国应考虑建设第二总部
  3. 亲身经历:如何判断一个字符在a/z之前?
  4. 安卓显示视频画面的动画效果及代码
  5. 免费文件分发服务器,文件分发服务器 AWS CloudFront(CDN)使用入门-以S3为例 Lebal:Research...
  6. linux 添加软连接、查看软连接、增加文件的执行权限
  7. mysql资源限制_超出了MariaDB / MySQL资源限制
  8. java是否安装outlook,Java程序定期检查ms Outlook是否有新邮件
  9. vs的windows应用程序上的鼠标为什么一直是加载状态?_了解 JavaScript 应用程序中的内存泄漏...
  10. 《调试软件》作者主页