
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能问题一直以来都是软件编程开发程序员需要长期关注的一个编程问题,而本文我们就通过案例分析来简单了解一下,软件开发性能优化策略分享。
时空转换
刷过算法题目的都知道评分条件有:时间复杂度、空间复杂度,两样消耗都很小的话,评分越高,即优秀的算法。
但在实际开发过程中,一般二者不可兼得。要么占用空间小运行时间长一点,要么追求效率则占用空间就多一点。我们要做的就是在特定的需求场景中,极力优化其中的一方,此时往往需要牺牲另一方来达到目的。
空间换时间
在当前业务场景下,追求的是极致性能,即响应速度要足够快,比如开屏页的打开速度,如果每次打开H5都去服务端请求页面的渲染数据,再加上用户所在城市不同,从纽约用户访问北京,比北京本地用户访问肯定慢很多。那此时就有了**CDN**这种工具。运营商的CDN节点遍布全球,页面在开发完毕后,直接推送到全球各地的CDN中缓存起来,这样用户访问时只需要命中近的CDN节点,速度自然而然就上去了,但是付出了空间的成本。
在风控场景内也有类似场景,决策引擎为了极致性能,也需要空间换取时间:
配置数据缓存:决策流数据关联复杂,如果每次都去和DB或者数据中心交互,I/O耗时大,得不偿失。本地缓存一道+更新触发反而是更好的选择。
短期缓存:热点信息且在一段时间内不会改变的(或者能容忍一段时间不变的),接入缓存会更利于查询速度。
时间换空间
此策略反其道而行,用时间换取空间。此时,“空间比较宝贵”,比如内存相对于磁盘来说就很宝贵,但是存放在磁盘内再调度起来使用时,需要一定的时间来获取。
在风控场景内,同样存在很多场景:
节省空间成本:“云上”服务器相对“云下”自建IDC机房是更贵的空间资源,所以风控将大量非实时的数据放在云下服务器计算,云上服务需要用的时候,需要付出一定的调用时间即可:跨机房调用(专线带宽争抢占用)需要额外多消耗5~10ms
设备指纹采集数据压缩上传:风控依赖设备指纹,设备指纹是内嵌在应用APP内采集机器本身信息的SDK,大量的设备信息如果不压缩上传会占用很多带宽,影响占用了正常的用户请求。压缩后,节省了空间,但是付出的代价就是,每次都需要额外付出压缩/解压的耗时。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。