立即注册
查看: 700|回复: 4

[资料] 大规模C++工程单元测试性能优化研究

已绑定手机
发表于 2022-2-26 17:42:13 | 显示全部楼层 |阅读模式 来自 广东省深圳市
本帖最后由 yiyi1 于 2022-2-26 17:57 编辑

摘要:为了解决自动化单元测试工具在测试大规模C++工程时经常发生内存溢出故障且耗时较长这一问题,在测试流程中引入了缓存优化技术,并提出了一种面向不同测试方式的缓存优化方法;当用户直接对整个工程进行测试时,系统将采用缓存预取的方式,通过设计的缓存预取模型,在缓存出现读缺失之前为其提供数据块;当用户对单个文件进行测试时,系统将采用改进的GDSF替换算法进行缓存替换;实验表明,该方法能够有效地避免此类单元测试工具发生内存溢出故障并减少了测试的时间,使其支持的被测工程规模由5000行左右增加至十几万行,大大提升了系统的性能。

1、相关工作
随着新技术的不断发展,软件规模也日益增大,软件的性能优化研究已成为国内外许多学者的重点研究方向,其中通过缓存优化技术来提升系统整体的性能已经成为主流的优化方式之一。
目前国内外有很多学者都在从事缓存优化的研究工作。杨冬菊等人为了保证在高并发、大用户流量的场景下身份认证系统能够稳定高效的运行,提出了基于缓存的分布式统一身份认证机制。它通过将热点数据预存到缓存中以提高响应的速度,并结合复杂多样的用户行为提出了基于 Hybrid的多因素缓存替换算法。胡森森等人通过总结超长指令字处理器发射宽度动态变化的特点,并利用其动态特征来驱动缓存的重构,从而达到合并处理器核或动态分离的目的。王永功等人分析了信息中心网络的架构,指出多跳LRU缓存中"缓存退化"的问题,提出一种基于预过滤的O(1)复杂度的改进算法,极大的增强了内容分发效率。张艳等人比较并分析传统缓存模型 MRM和 IRM的思想,基于字节代价以及相对流行度的概念,提出满足延迟时间、命中率和字节命中率等多种性能指标要求的缓存优化模型,并给出相关算法。刘磊等人在研究缓存技术的过程中,提出了一种最小驻留价值的缓存替换算法,该算法结合对象大小和访问频率进行驻留价值的计算,优先选取价值最小的对象进行替换,但是其忽略了缓存的使用时间和物理资源的使用情况。
综上所述,针对缓存的研究,一方面是对缓存内容和实现方法的研究,另一方面是对缓存替换算法的研究。作者对单元测试工具的优化也将从以上两方面进行。

2、缓存预取模型的设计
当用户选择直接对整个工程进行测试时,为了尽量减少I/O等待的时间,本节设计了一种缓存预取的模型,它借助一个缓存队列将缓存预取模块和文件测试模块彻底解耦,使得原来只能串行执行的两个模块现在可以并行执行。
2.1 模型构成
结合生产者一消费者的思想,本文设计的缓存预取模型如图1所示。
该模型主要由以下6部分组成∶
1)控制器主要负责各部件之间的任务调度和操作控制,并且负责与文件测试模块之间的交互,使各部件有序稳定的运行。
1.jpg
2)协调器主要负责接收对象生产部件和对象消费部件发送过来的数据,通过数据协调双方的运行,并在参数对象中记录数据。
3)对象生产部件主要负责预先批量的从磁盘中读取对象放入缓存队列中,并记录读取对象的个数和所消耗的时间,将数据发送给协调器。
4)对象消费部件主要负责从缓存队列中读取对象交给控制器处理,并记录读取对象的个数和测试所花的时间。
5)缓存队列主要是用来存放预取出来的对象,其大小支持配置,避免对虚拟机内存的过度使用从而导致内存溢出故障。同时,它还支持同步阻塞,例如缓存队列为空时,消费方将一直处于阻塞状态,直到生产方调入下一批预取对象。
6)异常处理器主要负责对各部件运行过程中出现的异常进行捕捉处理。

更多详细内容请下载附件查看
游客,如果您要查看本帖隐藏内容请回复

已绑定手机
发表于 2022-2-26 19:34:40 | 显示全部楼层 来自 广东省深圳市
谢谢分享C++的资料
已绑定手机
发表于 2022-2-27 12:13:16 | 显示全部楼层 来自 江苏省徐州市
学习学习!!谢谢分享!!!!
已绑定手机
发表于 2022-2-27 12:13:20 | 显示全部楼层 来自 江苏省徐州市
学习学习!!谢谢分享!!!!
已绑定手机
已实名认证
发表于 2022-3-9 09:00:21 | 显示全部楼层 来自 广东省深圳市南山区
学习学习!!谢谢分享!!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表