C++元编程——BP神经网络编译期优化

之前的BP神经网络中,矩阵的get函数要用乘法和加法计算出数据所处位置,而实际上,大多数情况下程序获取的是固定位置的数据,所以可以想到使用编译期的计算方法,这样在进行矩阵运算时候可以稍微加快运算速度,而且还可以进行编译期越界检测。word is cheap,show me the code。

首先,测试函数和上一篇博客的一样:https://blog.csdn.net/Dr_Jack/article/details/127776013

运行速度经过测试大概能提升40%。下面展示mat.hpp代码:

#ifndef _MAT_HPP_
#define _MAT_HPP_
#include 

#include 
#include 

template
struct mat_m
{
	static boost::pool<> s_pool;
	val_t* p;
	mat_m() :p(nullptr)
	{
		//p = (val_t*)malloc(sz * sizeof(val_t));
		p = (val_t*)(s_pool.malloc());
		for (int i = 0; i < i_size; ++i)
		{
			p[i] = 0;
		}
	}
	~mat_m()
	{
		if (p)
		{
			//free(p);
			s_pool.free(p);
		}
	

你可能感兴趣的:(元编程学习实践,神经网络,python)