dynamic 锁竞争等系统开销分析

本文探讨了在高频率操作下,如使用`dynamic_cast`进行类型转换以及锁竞争带来的系统资源消耗。以每秒处理一千万数据为例,指出这些操作可能导致的性能瓶颈,如动态转换的系统开销、锁竞争的时间浪费和带宽问题。当数据量大时,例如每条数据100字节,所需的带宽可能成为限制因素。此外,频繁的内存分配和释放也会显著影响性能。
摘要由CSDN通过智能技术生成
1. dynamic_cast

#include <iostream>
#include <ctime>
using namespace std;


class Base
{
public:
	virtual void show(){};
};


class Derived : public Base
{
public:
	virtual void show(){};
};


int main(int argc, char* argv[])
{
	Base* pTmpBase = new Derived();
	Derived* pTmpDerived = NULL;


	time_t begin = time(NULL);


	// 10亿次
	int count = 1000*1000*1000;
	for (int i=0; i<count; i++)
	{
		// 20 秒
		//pTmpDerived = dynamic_cast<Derived*>(pTmpBase);


		// 2秒
		//pTmpDerived = static_cast<Derived*>(pTmpBase);


		// 3秒
		//pTmpBase->show();


		// 空循环,运行时间也是2~3秒内
	}


	time_t end = time(NULL);


	printf("Using seconds %d.\n ", end - begin);


	system("pause");  


	return 0;
}



10亿次操作,空循环、static_cast、虚函数消耗都不大,只有3秒左右,dynamic_cast有20秒左右。说dynamic_cast系统开销大都是相对的࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值