小技巧(打开文件之后就是16进制的数据)


//将字节数据输出到文件,记录日志
static void fileWriteLog(char *p, long count)
{const char *filename = "/var/log/huituo/jt808_log/other.log";FILE *fp1;//以追加读写的方式打开文件fp1 = fopen(filename, "a+");//失败返回NULLif (fp1 == NULL) {printf("open file %s failed!", filename);}fwrite(p, count, 1, fp1);//关闭文件fclose(fp1);
}void main()
{//msg->buffer是一个字节数组 ,msg->size是字节数组的长度char buf[128] = { 0 };      for (int i = 0; i < msg->size; ++i) {sprintf(buf, "%02x", msg->buffer[i]);//一个字节一个字节的往里写//写日志到文件fileWriteLog(buf, strlen(buf));        }char ch[]="\n";//添加换行符fileWriteLog(ch, 1);
}
性能测试分为Mbps 和Tps。

Mbps=Mbit/s即兆比特每秒(1,000,000bit/s),Million bits per second的缩写,是一种传输速率单位,指每秒传输的位(比特)数量。
其中:bit代表位或比特,存放一位二进制数,即 0 或 1,最小的存储单位Byte代表字节,8个二进制位为一个字节,即1Byte=8bit,Byte为数据量常用单位。

bps是每秒比特率,8bps=1B/s(字节)
而M是2的20次方,或略作10的6次方。
所以1Mbps=1024Kbps或128KB/s(就是我们常见的网速转换)
1024Kbps / 8 = 128KB/s

TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。

如何计算Mbps:

首先计算处理任务所需时间:

//Linux环境下:
#define MAX_TEST_DATA_LENGTH  1024*1024    //1M数据
struct timeval tv_begin, tv_end;
double diff_time;
double dSpeedMbps;
gettimeofday(&tv_begin, NULL);//开始时间进行处理数据。。。。。gettimeofday(&tv_end, NULL);//结束时间diff_time = (double)((tv_end.tv_sec - tv_begin.tv_sec)*1000000 + (tv_end.tv_usec - tv_begin.tv_usec) )/1000000;   //单位sdSpeedMbps = MAX_TEST_DATA_LENGTH * 8.0 / (1024 * 1024 * diff_time);
printf("\nTime used: %.2f seconds, Average speed: %.2f Mbps\n\n", diff_time, dSpeedMbps);

注意"/" 除号,如果除号两边有一边数据为double型,则输出的数据可以用double变量保存,会保留小数位,具体保留几位,用 %.2f 就是保留小数点后两位,用 %.8f 就是保留小数点后八位。

1、%lf 双精度浮点型,也就是double型的格式,默认保留6位小数。

如:double a = 1.2; printf(“%lf”,a); //1.200000。

2、%.2lf 同上,不过限制了,值保留2位小数。

如:double a = 1.2345; printf(“%.2lf”,a); //1.23。

3、%.2f 表示单精度浮点型,也就是float型的格式。

如:float a = 1.2731; printf(“%.2f”,a); //1.27。

如何计算Tps:

//Linux环境下:
#define TIMES  10000    //执行10000次
struct timeval tv_begin, tv_end;
double diff_time;
double nSpeedTps;
gettimeofday(&tv_begin, NULL);//开始时间执行次数。。。。gettimeofday(&tv_end, NULL);//结束时间diff_time = (double)((tv_end.tv_sec - tv_begin.tv_sec)*1000000 + (tv_end.tv_usec - tv_begin.tv_usec) )/1000000;   //单位snSpeedTps = TIMES / diff_time;
printf("\nTime used: %.2f seconds, Average speed: %d Tps\n\n", diff_time,  nSpeedTps);//将测试记录输出到文件,记录日志
void fileWriteLog(char *p, long count)
{const char *filename = "c:\\loadrunnerLog.txt";FILE *fp1;//以追加读写的方式打开文件#ifdef WIN32 fopen_s(&fp1, filename, "a+");//如果成功返回0,失败则返回相应的错误代码if (!fp1) {printf("open file %s failed!", filename);}
#else       fp1 = fopen(filename, "a+");//失败返回NULLif (fp1 == NULL) {printf("open file %s failed!", filename);}
#endif  fwrite(p, count, 1, fp1);//关闭文件fclose(fp1);
}char logChar[120] = { 0 };
sprintf(logChar, "\nECCGenkeyPair  %d times diff_time = %.2f ms, average speed = %d Tps\n",TIMES, diff_time, nSpeedTps);
fileWriteLog(logChar, strlen(logChar));

关于性能测试代码的一些记录(可以将测试记录输出到文件里,记录日志)相关推荐

  1. 成长了,记录一下,增值税发票识别写入excel文件里

    在写博客方面,我有一点点成长了,现在能够把话讲得更简洁了,而且能够让别人复用我代码的难度降低了,这得记录一下,哈哈哈哈 之前写过一篇增值税发票ocr的博客,是我写的这些文章里获赞最多的,哈哈哈,虽然也 ...

  2. C++ std map unordered_map hash_map 的查找性能测试代码及结果

    C++ std map unordered_map hash_map 的查找性能测试代码.过程及结果 测试环境 测试结果 测试代码 测试过程记录 测试版本 RLEASE x64 测试版本 Debug ...

  3. DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练测试过程全记录

    DL之RNN:基于TF利用RNN算法实现生成编程语言代码(C语言).训练&测试过程全记录 目录 输出结果 监控模型 训练&测试过程全记录 训练的数据集展示 输出结果 1.test01 ...

  4. 开源代码库_3个开源代码库来处理MARC格式的记录

    开源代码库 欢迎回到Nooks&Crannies! 在为我的婚礼休假一个月之后,我一直在为即将到来的专栏挖掘一些有趣的地方. 这个月,我将看一些开放源代码库,开发人员可以使用它们来处理MARC ...

  5. java学习中,DVD管理系统纯代码(java 学习中的小记录)

    java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{public static void main (String[] args ...

  6. Git专题:历史记录清理:保留代码并删除一年前的提交记录

    29.1 克隆最后一个版本 我们在克隆一个使用了很久的 Git 仓库时候可能会发现耗费的时间非常长,这是因为 Git 会拉取所有的历史版本导致,如果我们想让 Git 在克隆代码的时候快一些,可以在gi ...

  7. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...

    [实例简介] 代码实现android打电话,发短信,获取通讯录.通话记录.短信记录 [实例截图] [核心代码] 19287b5f-b70c-4210-ab04-9d24ddd60788 └── cal ...

  8. java如何查看调用记录_查看Java记录

    java如何查看调用记录 JEP 359 (可在JDK 14中用作预览功能)将记录引入Java. 记录是对普通数据聚合建模的简单方法. 一个简单的范围记录如下所示: record Range( int ...

  9. java记录目录树_Java记录

    java记录目录树 https://openjdk.java.net/jeps/359概述了Java的新功能,该功能可能会/将在某些将来的Java版本中实现. JEP建议使用一种新的"类别& ...

最新文章

  1. PouchContainer 发布 0.3.0 版本,支持 Kubernetes 拥抱 CNCF 生态
  2. 北京大学AI写作机器人来了,会替代记者?
  3. python done()什么意思_Python done
  4. JavaScript数组结构与算法——数组详解(中)
  5. Spring的两种任务调度Scheduled和Async
  6. PHP 判断是否包含某字符串
  7. golang(5)使用beego 开发 api server 和前端同学拆分开发,使用swagger
  8. c# 在winform中为DataGridView头部标题添加ContextMenuStrip菜单
  9. jenkins pipline 用法收集
  10. 链上结构化产品Ribbon将推出基于看跌期权的资管产品Puts Theta Vault
  11. Android为页面添加水印
  12. 关于大学生寝室点外卖的调研报告
  13. 红警游戏开源代码带给我们的震撼
  14. 实验改变人类:震撼世界的十大科学实验- -
  15. 看不到 虚拟打印机 adobe pdf printer
  16. 浅谈LCD液晶屏和电子墨水屏的区别
  17. gbq可以算出土建量吗_广联达bim土建算量软件|广联达BIM土建算量GCL2013下载 - 121下载站...
  18. 图像去模糊(一)——理解模糊核
  19. php下载xls文件
  20. 在excel中实现隔行删除

热门文章

  1. 【元宇宙系列】游戏与元宇宙(上)——元宇宙的胚胎发育期
  2. 李开复给中国大学生的第二封信——从优秀到卓越
  3. 手机WiFi流量失踪案
  4. 会编程语言的程序员学习SEO有优势吗?
  5. 攻防世界upload1解题过程
  6. linux mysql 主从 1130_linux下安装Mysql(干货!!!)解决mysql 1130问题,远程登录问题...
  7. 房屋交接时需要注意些什么?
  8. 在Centos7环境下进行搭建postgresql-xl集群环境
  9. 手机丢了!仅需3步,教你补救微信和支付宝
  10. 还不错的王者荣耀战力查询PHP源码+Layui开发