<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[carlclouder的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/carlclouder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; carlclouder]]></copyright><item><title><![CDATA[【原创】性能炸裂c++20协程+iocp/epoll，C++20无栈协程超轻量高性能异步库开发实战]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/126048486</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/126048486</guid><author>carlclouder</author><pubDate>Fri, 29 Jul 2022 16:28:27 +0800</pubDate><description><![CDATA[主要讲述c++20协程库开发的实战过程和思路方法，比较干货，后面有源码。刚学也有很多不足，希望大佬指正。]]></description><category></category></item><item><title><![CDATA[【原创】C++ bit比特位数据编辑类模版CLBitT]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/119282056</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/119282056</guid><author>carlclouder</author><pubDate>Sat, 31 Jul 2021 22:12:01 +0800</pubDate><description><![CDATA[C++数据bit比特位编辑类CLBit
目前数据的最小编辑单位大多为Byte（比特），而缺少对bit（比特位）的编辑方式。因此CLBit类就是为了编辑数据比特位构造的包装类。通过比特位级别的数据编辑（增删改查等）功能，可更有效的使用内存空间资源。
#ifndef __CL_BITBASE_H__
#define __CL_BITBASE_H__

#include "../_cl_common/CLCommon.h"
#include &lt;vector&gt;
#include &lt;iostream]]></description><category></category></item><item><title><![CDATA[[原创]STL容器map和unordered_map性能，创建，插入，随机访问速度对比！]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/108433026</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/108433026</guid><author>carlclouder</author><pubDate>Sun, 06 Sep 2020 16:42:03 +0800</pubDate><description><![CDATA[测试map和unordered_map，采用1亿次随机访问，分别在数据量10~1000万不同情况测试，生成时间和随机访问时间；
平台：win10，vs2019，c++14，编译，启动优化
结论：
1、unordered_map在任何情况下都要比map的随机访问速度更快，5倍以上；
2、unordered_map在100万数据量以下要比map的随机插入速度快，如果单个保存的数据结构较大，这一速度会进一步降低；
3、unordered_map会比map占用更多的内存；
元素个数 | 访问次数     | map]]></description><category></category></item><item><title><![CDATA[【效率对比】c++多线程同步几种方式的效率对比研究： 原子操作，c++锁，自旋锁，windows临界区，windows互斥对象]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104861333</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104861333</guid><author>carlclouder</author><pubDate>Sat, 14 Mar 2020 16:13:37 +0800</pubDate><description><![CDATA[通过比较以下几种同步方式，测试各方法效率，分为以下6种情况做对比：

不加任何同步措施；
Windows原子操作；
c++11 mutrex；
自定义的自旋锁CLCS；
Windows临界区；
Windows互斥对象；

硬件平台：AMD 8核16线程，内存16GB
系统/软件平台：windows10，vs2019com(vc++)；
方法：定义3个变量，在多线程中自加（16线程x10万次），记录...]]></description><category></category></item><item><title><![CDATA[源码分享，采用线程池，实现高性能跨平台C++多线程并行库，附测试！]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104470513</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104470513</guid><author>carlclouder</author><pubDate>Mon, 24 Feb 2020 01:22:00 +0800</pubDate><description><![CDATA[由于实用需要，实现一个跨平台的多线程并行库，摆脱windows的ppl，并且兼顾效率和跨平台性，特点如下：

采用C++11跨平台，调度性能和windows ppl库相近；
使用了其他大神的 线程池代码，实现线程高效复用；
支持STL容器、C数组、指针多种方式传递容器目标对象做并行；
代码可自行完善功能；

先看测试结果：


测试所用的执行函数体执行时间极端{ i += 1；}，目的是，测试比较...]]></description><category></category></item><item><title><![CDATA[效率对比：分别用 C++Amp，C++ PPL，SSE/AVX，Serial（串行）计算矩阵乘法。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104281311</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104281311</guid><author>carlclouder</author><pubDate>Wed, 12 Feb 2020 18:10:47 +0800</pubDate><description><![CDATA[本次测试矩阵乘法未作分块优化。
未使用cuda测试。
采用微妙级的计时器。
分别对16阶方矩阵到4048阶方阵采用如下方式做乘法计算，统计结果。


C++Amp（GPU），
C++PPL（多线程16核），
SSE/AVX（单线程），
AVX-Db（单线程，双精度），
Serial（单线程串行）

时间统计如下（单位：秒）




Rank   :
16
32
64
128
256
512
10...]]></description><category></category></item><item><title><![CDATA[源码分享：C++源码实现快速搭建神经网络，模拟sin和cos函数双逼近]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104255740</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104255740</guid><author>carlclouder</author><pubDate>Mon, 10 Feb 2020 22:28:49 +0800</pubDate><description><![CDATA[训练采用1输入，定义域为正负2Π随机数，输出2维向量，对于sin和cos函数计算值。现在用C++源码实现神经网络，模拟函数双逼近预测。
X={x1},x1∈[−2π,2π]
X= \{x_1\}, x_1\in\mathbb [-2\pi,2\pi]
X={x1​},x1​∈[−2π,2π]
Y=Γ(X)={sin(x1),cos(x1)}
Y=\Gamma(X) = \{sin(x_1),cos...]]></description><category></category></item><item><title><![CDATA[源码分享：C++高性能的内存池实现。内存预分配，非复制构造，全局内存池。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104254577</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104254577</guid><author>carlclouder</author><pubDate>Mon, 10 Feb 2020 21:07:21 +0800</pubDate><description><![CDATA[为了实现面向对象编程，对于的复杂型结构快速构造与释放，写了个内存池管理模板。他特点是允许用户放弃内存池生成对象使用权，而不是执行析构。实现对象的复用。

实现同类型对象内存池的全局华管理。内存块的大小可调。内存池状态可输出显示。
内存预分配。对象构造采用原始构造，非动态申请和复制构造，提高速度。
加锁，实现多线程支持。
通过giveUpOne方法放弃对象使用权，不需要释放对象，实现高度对象复用。
...]]></description><category></category></item><item><title><![CDATA[轻量级C++神经网络应用库CreativeLus：4、CNN卷积神经网络。案例：(MNIST)手写数字识别。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104129658</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104129658</guid><author>carlclouder</author><pubDate>Sat, 01 Feb 2020 04:34:37 +0800</pubDate><description><![CDATA[github资源地址：[Release-x86/x64]
上一篇：轻量级C++神经网络应用库CreativeLus：3、复杂函数逼近。案例：多输入混合逼近。
下一篇：轻量级C++神经网络应用库CreativeLus：5、ResNet残差网咯。案例：(cifar-100)图片分类。

案例4：CNN网络，实现(MNIST)手写数字识别
本案例的任务
经过前面几章的介绍，对CL基本功能应有所了解。C...]]></description><category></category></item><item><title><![CDATA[轻量级C++神经网络应用库CreativeLus：3、复杂函数逼近。案例：多输入混合逼近。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104124092</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104124092</guid><author>carlclouder</author><pubDate>Fri, 31 Jan 2020 19:06:42 +0800</pubDate><description><![CDATA[github资源地址：[Release-x86/x64]
上一篇：轻量级C++神经网络应用库CreativeLus：2、分类问题。案例：空间点在平面上2分类。
下一篇：轻量级C++神经网络应用库CreativeLus：4、CNN卷积神经网络。案例：(MNIST)手写数字识别。

案例3：复杂函数逼近

本章介绍以下几个主要内容，本章内容非常重要：
1、创建自定义结构的神经网络；
2、模型自调整介...]]></description><category></category></item><item><title><![CDATA[轻量级C++神经网络应用库CreativeLus：2、分类问题。案例：空间点在平面上2分类。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104121022</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104121022</guid><author>carlclouder</author><pubDate>Fri, 31 Jan 2020 02:58:03 +0800</pubDate><description><![CDATA[案例2：平面点2分类问题

本章将介绍以下几个新的使用方法：
1、对样本数据的保存及读取，对训练好的模型的保存及读取；
2、启动多线程支持，加速你的训练模型；
3、动态的实时输出训练时的图形结果；（按每一训练周期做一次输出更新的方式）
4、将图形和曲线结果保存到外部Bitmap图形文件中；
5、将模型的计算内核和训练扩展脱开，释放训练扩展占用的内存，仅保留预测部分。

问题介绍：
我们在三位空间中...]]></description><category></category></item><item><title><![CDATA[无限维数组C++模板类实现，源码分享]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104112900</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104112900</guid><author>carlclouder</author><pubDate>Thu, 30 Jan 2020 10:38:03 +0800</pubDate><description><![CDATA[这是一个任意对象的无限维数组模板，实现比较多功能，能做很多事情，泛型实例化的对象的显式动态构造或析构，有一个微型内存回收手法可以高效利用到多维运算，比如神经网络，举证计算中，共享下代码。
其中宏CLArrayObj是用于定义类类型数组的，CLArrayV是用于定义基础值类型数组的两个宏；
先来看看应用！
class B {//先定义的一个演示类B，备用
public:
	double a = RA...]]></description><category></category></item><item><title><![CDATA[轻量级C++神经网络应用库CreativeLus：1、库介绍。案例：简单sin函数逼近。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104110691</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104110691</guid><author>carlclouder</author><pubDate>Thu, 30 Jan 2020 04:30:17 +0800</pubDate><description><![CDATA[CreativeLus库，又名“创造性逻辑元”，简称CL，是基于反馈式神经网络（BP网络）模型理论基础开发的C++神经网络库。希望在尽可能的丰富功能前提下，让使用者付出极低的代价。尤其是学生、研究人员或小型应用，在机器学习，深度学习，神经网络应用等领域能有一种快速的应用可选方案。

作为超轻量级应用库，它区别于TensorFlow、PyTorch等强大而复杂的系统工具或库，但它同样简单易用，而且有效。能处理常规逼近，分类问题，还能构建自定义的各类网络模型，包括：复杂节点网络，卷积网络(cnn)，残差网络]]></description><category></category></item><item><title><![CDATA[源码分享：C++矩阵类CLMatrixT，功能强大使用简单，支持内存池、宽指令、并行化加速！持续更新...]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/104099941</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/104099941</guid><author>carlclouder</author><pubDate>Tue, 28 Jan 2020 17:12:28 +0800</pubDate><description><![CDATA[C++矩阵类模板CLMatrixT：C++矩阵类模板CLMatrixT介绍：特点先演示使用方法：再看运行测试结果：最后分享源代码：
C++矩阵类模板CLMatrixT介绍：
最近在研究AI和深度学习，矩阵计算代码基本全是python的，C++基本没有成熟的库。而矩阵计算中，许多python的矩阵计算例子用法都很简单，感觉C++也应该有属于自己的矩阵处理类，即可享受C++的速度又可享受面向对象编程方...]]></description><category></category></item><item><title><![CDATA[C++（STL）容器采用迭代器访问及下标访问的效率详细对比，附详细代码及测试结果。]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/102182497</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/102182497</guid><author>carlclouder</author><pubDate>Sun, 06 Oct 2019 01:00:59 +0800</pubDate><description><![CDATA[C++（STL）容器处理大量数据时的遍历操作，代码效率情况如何，今天做一个系统的效能测试，对比写不同的代码书写方法对效率的影响。值得注意的是，容器遍历这种底层操作，往往对上层高度封装后的代码效率在几何累计效应之下会产生巨大影响，不可忽视。
我们选用最简单的vector容器作为测试目标。先看下测试代码：
void main() {	

	vector&lt;byte&gt; tagv;       ...]]></description><category></category></item><item><title><![CDATA[实现50W+并发连接测试通过，IOCP模型C++封装类代码分享！]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/101266022</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/101266022</guid><author>carlclouder</author><pubDate>Tue, 24 Sep 2019 09:39:58 +0800</pubDate><description><![CDATA[先看测试效果：
家用电脑做的测试：网络联通100M，cpu：锐龙1700 16线程，16G内存；
最多时候跑50W+连接没问题，家里的电脑，开多了提示缓冲用尽，只能同时开9W个连接测试。
测试中，iocp服务程序启动后，同时绑定监听三个不同的地址和端口；iocp服务端采用内存池处理数据；
测试端，是把测试软件远程投到外网公司的电脑上，在端口20011上，并发3W个实时通信连接，响应时间均值18毫秒...]]></description><category></category></item><item><title><![CDATA[显式调用类的构造函数(而不是用赋值构造)，实现一个new操作]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/101265523</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/101265523</guid><author>carlclouder</author><pubDate>Tue, 24 Sep 2019 09:29:46 +0800</pubDate><description><![CDATA[//ClassA 为定义好的一个类
//以下相当于ClassA * p =  new ClassA (_T(“this is classA”));
ClassA* p = (ClassA*)malloc(sizeof(ClassA));       //分配对象所需内存
p-&gt;ClassA::ClassA (_T(“this is classA”));               //通过指...]]></description><category></category></item><item><title><![CDATA[经典内存池c++源代码分享及性能对比研究]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/101264830</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/101264830</guid><author>carlclouder</author><pubDate>Tue, 24 Sep 2019 09:17:23 +0800</pubDate><description><![CDATA[最近在写一个IOCP扩展类，遇到内存池问题，网上的完整代码不多，可惜没钱下载，只能自己研究了，自己写了份代码，实现了基本功能，自动增加内存块，可实现较大吞吐量。代码分享出来，请大家交流，帮助优化。目前还只能实现单个对象的管理，大神请指点。
先来看性能对比结果，见下图（代码在后面，可能微博识别的原因导致贴上来后代码有些错误，自己调整）：
Release模式下，反复循环处理总计5200万个对象，传统n...]]></description><category></category></item><item><title><![CDATA[用WindowsAPI封装绘图窗口类，如何从窗口消息值转成可读消息字符串，Win32窗口生命周期消息]]></title><link>https://blog.youkuaiyun.com/carlclouder/article/details/101262788</link><guid>https://blog.youkuaiyun.com/carlclouder/article/details/101262788</guid><author>carlclouder</author><pubDate>Tue, 24 Sep 2019 09:07:26 +0800</pubDate><description><![CDATA[最近在写一个纯win32api方式创建窗口的绘图类的封装（摆脱mfc的束缚）。
从对win32api方式生成一个窗口过程中，观察窗口过程函数接受了哪些消息，了解窗口生命周期更深刻的认识。
第一步：实现实现一个windows消息id值到以"WM_"开头的可读的windows消息名字符串的转换函数（该函数由WinDef.h头文件制作而成），
代码如下：
C++ Code
//全局函数：取得window...]]></description><category></category></item></channel></rss>