diff --git a/README b/README index 736d44b4382a14647a59c9c32c12281f02c261c7..e5ac3b6c01738f62dd401926218715cf21bd6a2d 100644 --- a/README +++ b/README @@ -1,12 +1,11 @@ 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 + + diff --git a/tunnel_speed/test.c b/tunnel_speed/test.c new file mode 100644 index 0000000000000000000000000000000000000000..5fcda102bdfc721a36e79a1c930eff7b714241c7 --- /dev/null +++ b/tunnel_speed/test.c @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#include +#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\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; +}