提交 138e3da3 编写于 作者: M manjaro-xfce

加入管道性能测试C语言程序

上级 63cae355
C++知识点测试小程序
closure
C++闭包
https://goldenhawking.blog.csdn.net/article/details/70589476
chesspi
一天时间攒一个C++控制台中国象棋程序
https://goldenhawking.blog.csdn.net/article/details/117534567
closure
C++闭包
https://goldenhawking.blog.csdn.net/article/details/70589476
cpp_rv_ref
C++右值引用的效果测试
......@@ -16,26 +15,30 @@ cpp_threadpool
functional助力C++11实现高度可重用接口-线程池例子
https://goldenhawking.blog.csdn.net/article/details/51981905
find0xff
论坛:二维数组中找最大特征数组
https://goldenhawking.blog.csdn.net/article/details/116240710
fileLoadControl
机械盘阵高并发——使用ImDisk 与 junction显著提高整体吞吐性能
https://goldenhawking.blog.csdn.net/article/details/122093588
floodfill_mdf
作业讲评-二值矩阵避障最短路径算法
https://goldenhawking.blog.csdn.net/article/details/109411787
find0xff
论坛:二维数组中找最大特征数组
https://goldenhawking.blog.csdn.net/article/details/116240710
findfoo
大道至简-基于C的库封装发布技术
https://goldenhawking.blog.csdn.net/article/details/119845838
floodfill_mdf
作业讲评-二值矩阵避障最短路径算法
https://goldenhawking.blog.csdn.net/article/details/109411787
huarongdao
广度优先求解算法演示(华容道C++代码,速度2644组/秒)
https://goldenhawking.blog.csdn.net/article/details/112414933
kafka
MSYS2显著简化Kafka在windows C++下的使用门槛
https://goldenhawking.blog.csdn.net/article/details/123928247
nmcalc
一种基于C++STL库的回溯排列组合枚举器
https://goldenhawking.blog.csdn.net/article/details/80037669
......@@ -68,19 +71,27 @@ sharedptr_ndarray
share_ptr在C++多维数组管理方法中的优势和性能测试
https://goldenhawking.blog.csdn.net/article/details/78171742
string_split
C++11分解字符串
https://goldenhawking.blog.csdn.net/article/details/80833565
tunnel_speed
基于进程管道的SDR最大吞吐速率测试
https://goldenhawking.blog.csdn.net/article/details/124575558
udp_loss_test
(Win32) QUdpSocket 丢包测试与解决
https://goldenhawking.blog.csdn.net/article/details/105622237
uhd_cpp
USRP B210 SDR C/C++接口连续收发程序
https://goldenhawking.blog.csdn.net/article/details/109907083
USRP 套件在windows下的快速引入
https://goldenhawking.blog.csdn.net/article/details/110727815
string_split
C++11分解字符串
https://goldenhawking.blog.csdn.net/article/details/80833565
udp_loss_test
(Win32) QUdpSocket 丢包测试与解决
https://goldenhawking.blog.csdn.net/article/details/105622237
#include <stdio.h>
#include <time.h>
#include <memory.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <io.h>
#include <fcntl.h>
#endif
int main(int argc, char *argv[])
{
const size_t package_size = 1024*1024;
char * array = (char *)malloc(package_size);
unsigned long long * header = (unsigned long long *)array;
unsigned long long * length = (unsigned long long *)(array+sizeof(unsigned long long));
unsigned long long totalsz = 0;
clock_t start_clk = 0, end_clk = 0, total_clk = 0;
int produce = 0, consume = 0;
int i = 0;
for (int i=1;i<argc;++i)
{
//-p means produce
if (strstr(argv[i],"p"))
produce = 1;
if (strstr(argv[i],"c"))
consume = 1;
}
if (produce==0 && consume==0)
{
fprintf(stderr,"Usage: %s <[-c][-p]>\n",argv[0]);
return 0;
}
#ifdef _WIN32
_setmode(_fileno(stdout), O_BINARY);
_setmode(_fileno(stdin), O_BINARY);
#endif
start_clk = clock();
if (produce==1 && consume==0)
{
long long lz = 0;
while (++lz < 10000)
{
*header = lz;
*length = package_size-sizeof(unsigned long long)*2;
//Produce
fwrite((char *)header,1,*length + sizeof(unsigned long long)*2,stdout);
fflush(stdout);
totalsz += *length + sizeof(unsigned long long)*2;
}
*header = lz;
*length = 0;
fwrite((char *)header,1,sizeof(unsigned long long)*2,stdout);
fflush(stdout);
totalsz += sizeof(unsigned long long)*2;
}
else if (produce==0 && consume==1)
{
fread((char *)header,2,sizeof(unsigned long long),stdin);
while (*length)
{
//Consume
fread(((char *)header)+sizeof(unsigned long long)*2,1,*length,stdin);
totalsz += *length + sizeof(unsigned long long)*2;
fread((char *)header,2,sizeof(unsigned long long),stdin);
}
totalsz += sizeof(unsigned long long)*2;
}
else
{
fread((char *)header,2,sizeof(unsigned long long),stdin);
while (*length)
{
//Consume
fread(((char *)header)+sizeof(unsigned long long)*2,1,*length,stdin);
//Produce
fwrite((char *)header,1,*length + sizeof(unsigned long long)*2,stdout);
fflush(stdout);
totalsz += *length + sizeof(unsigned long long)*2;
fread((char *)header,2,sizeof(unsigned long long),stdin);
}
fwrite((char *)header,1,*length + sizeof(unsigned long long)*2,stdout);
fflush(stdout);
totalsz += sizeof(unsigned long long)*2;
}
free(array);
end_clk = clock();
total_clk = end_clk - start_clk;
fprintf(stderr,"%lld Bytes %s%s\n\t%.3lf MB/s(%.2lf Gbits/s)\n\tRX(sc16) %.2lf MHz\n\tRTX(sc16) %.2lf MHz.\n",
totalsz,
(consume?"Consumed ":""),
(produce?"Produced ":""),
totalsz *1.0/1024/1024/(total_clk*1.0/CLOCKS_PER_SEC),
totalsz *8.0/1024/1024/1024/(total_clk*1.0/CLOCKS_PER_SEC),
totalsz *1.0/1024/1024/(total_clk*1.0/CLOCKS_PER_SEC)/4.0,
totalsz *1.0/1024/1024/(total_clk*1.0/CLOCKS_PER_SEC)/8.0
);
return 0;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册