性能优化的个人理解

    随着工作时间的增长,现在越来越会往性能方面去考虑,个人认为一个程序性能的好坏可以从cpu计算密集程度、内存管理,io操作密集程度以及网络通讯的规划这四个方面来体现,主要要解决的问题就是怎样通过最小的消耗来完成尽可能多的业务逻辑处理,而且对这种理念越深入就越能培养一个人对业务逻辑的理解能力,提高经验。

    就我目前的了解,对常用算法进行复杂度降低的优化,减少for循环、递归的使用,用简单计算算来代替直接的条件判断以及习惯减少代码缩进层数都可以做到代码体量的轻量化,而代码体量的轻量化也意味着在执行的时候会有更少的cpu计算产生,特别是在需要大量规律性运算支持的数据分析、信息挖掘方面,会体现的更为明显。

    得益于python语言的引用计数内存管理机制,python在内存开辟与释放是较为令人省心的,但是虽然有较为智能的垃圾回收机制,但是在一定条件下如果操作不当还是会产生内存溢出的问题,比如多个变量赋值同样的值得时候,或者循环中实例化对象不停的创建的问题,都有可能导致内存溢出。所以,注意变量赋值引用时对同一值的真实数据开辟内存的次数的变化以及对象引用次数在逻辑最后是否都变为0这些点来判断内存是否有多占用的问题。所以为了在多变量赋值同一值得时候可以这样写 a = b = 1,这种多层引用会将内存的开辟将为最低。

    在多并发的情况下,数据的输入与输出是一个性能消耗比较大的方面,所以怎么通过最少操作,以及较为迅速的数据存储方式来提供获取数据就显得尤为重要。目前普遍的使用的优化方法,比如缓存机制的引入实现对数据进行预读,异步服务器的使用减少主服务器的资源消耗,以及数据操作的时候管道的加入减少数据库开闭次数等,都可以大大提高服务器对操作处理的效率。不过在并发引入的同时,还要注意处理并发引出的数据同步的问题,以及多个操作同时处理一个数据的时候保证数据准确性的问题,一般这个时候可以引入队列来对操作请求进行排序,这样可以做到对输入输出进行严格的顺序控制,保证数据的准确性。或者引入锁的思想来控制输入与输出的顺序来确保准确性。另外,在进行缓存数据与本地数据进行同步时候可以通过触发器来保持数据的一致,具体产生的并发问题也可以通过队列的方式来解决,可能出现脏数据的情况。

    对于网络方面了解的不多,目前了解过的除了基本的硬件设备铺设扩充,就只有cdn的就近访问导向技术。

    新人菜鸟程序员,正在成长,如有纰漏不严谨之处,望指出,另外,心得为一时兴起而写,措辞语义会有混乱之处请见谅。

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值