博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序优化
阅读量:6311 次
发布时间:2019-06-22

本文共 615 字,大约阅读时间需要 2 分钟。

.预分配内存

     预分配内存主要是针对需要循环处理数据的情况的。比如视频处理,每帧图像的处理都需要一定的缓存,如果每帧申请释放,则势必会降低算法效率,如下所示:

1 //处理一帧 2 void Process(BYTE *pimg) 3 { 4 malloc 5 ... 6 free 7 } 8 9 //循环处理一个视频 10 for(int i = 0; i < N; i++) 11 { 12 BYTE *pimg = readimage(); 13 Process(pimg); 14 }
View Code
1 //处理一帧 2 void Process(BYTE *pimg, BYTE *pBuffer) 3 { 4 ... 5 } 6 7 //循环处理一个视频 8 malloc pBuffer 9 for(int i = 0; i < N; i++) 10 { 11 BYTE *pimg = readimage(); 12 Process(pimg, pBuffer); 13 } 14 free
View Code

    前一段代码在每帧处理都malloc和free,而后一段代码则是有上层传入缓存,这样内部就不需每次申请和释放了。当然上面只是一个简单说明,实际情况会比这复杂得多,但整体思想  是一致的。

转载于:https://www.cnblogs.com/bile/p/4363973.html

你可能感兴趣的文章
「镁客早报」AI可预测心脏病人死亡时间;机器人开始在美国送外卖
查看>>
MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
查看>>
物联网全面升级,十年内推动工业进入智能化新阶段
查看>>
spring-通过ListFactory注入List
查看>>
一种基于SDR实现的被动GSM嗅探
查看>>
阿里云ECS每天一件事D1:配置SSH
查看>>
SQL Server 性能调优(性能基线)
查看>>
uva 10801 - Lift Hopping(最短路Dijkstra)
查看>>
[Java Web]servlet/filter/listener/interceptor区别与联系
查看>>
POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
查看>>
从零开始学MVC3——创建项目
查看>>
CentOS 7 巨大变动之 firewalld 取代 iptables
查看>>
延时任务和定时任务
查看>>
linux下的权限问题
查看>>
教你如何使用Flutter和原生App混合开发
查看>>
Spring Boot 整合redis
查看>>
CSS hover改变背景图片过渡动画生硬
查看>>
JDBC(三)数据库连接和数据增删改查
查看>>
淘宝应对"双11"的技术架构分析
查看>>
ssh
查看>>