利用C++ Lambda优化多分支赋值

利用C++ Lambda优化多分支赋值

我们经常需要根据不同的条件分枝来获取一个变量一共后续使用,

  • 通常我们会这么做。
//...
Type res;
switch (val) {
case val0: res = Type(...); break;
case val1: res = Type(...); break;
case val2: res = Type(...); break;
case val3: res = Type(...); break;
..
}
...
...
//...

上述代码需要执行一次默认构造,一次赋值,效率不高,就算有move-assignment的加持,其对默认构造的要求也是一个包袱,对于不支持默认构造的类型很难以此形式解决需求。

  • 那么,如果把上述代码写成一个函数,直接在对应的分支return对应的对象,在结合C++2.0的编译器对return-by-value的优化,再结合使用inline关键字,也可以实现较好的效果,当然要多写一个函数,如果仅是用一次,或是这样的需求有很多(要写很多函数),很麻烦,也有点不利于代码组织。结合这个利用函数返回值的思路,借助Lambda表达式便可以灵活的解决这个问题。
//...
Type res = [&val] {
		switch (val) {
		case val0: return Type(...); break;
		case val1: return Type(...); break;
		case val2: return Type(...); break;
		case val3: return Type(...); break;
		..
		}
	}();
...
...
//...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c语言中lambda表达式的性能优化主要集中在以下几个方面: 1. 减少函数调用开销:在使用lambda表达式时,每次调用函数都会有一定的开销,包括函数调用前的准备工作、参数传递和函数返回等。为了减少这些开销,可以将频繁调用的lambda表达式进行缓存,或者将其转换为具名函数。 2. 优化内存分配:在lambda表达式中,可能会存在动态内存分配的情况,例如使用new操作符来动态分配内存。为了提高性能,可以尽量避免频繁的内存分配和释放操作,可以通过预先分配一块内存,然后重复利用,或者使用栈上内存等方法来减少内存分配的开销。 3. 使用适量化数据类型:在使用lambda表达式时,尽量使用适量化数据类型,避免使用过大或过小的数据类型,以减少内存开销和提高运行效率。 4. 使用并行计算:在多核处理器上,可以使用并行计算的方式来提高性能。可以将一些独立的lambda表达式任务分配给不同的处理器核心并行执行,以减少总体的计算时间。 5. 避免不必要的计算:在编写lambda表达式时,避免进行不必要的计算和判断。可以使用条件判断来规避一些不必要的计算,或者使用短路运算来减少计算量。 总之,通过对lambda表达式中的函数调用开销、内存分配、数据类型选择、并行计算和计算优化等方面的优化,可以提高c语言中lambda表达式的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值