脚本写完要不要优化?是只做到有?还是做到先有后优?
提出的需求不太细致,只按照关键项完成了;但完成后有又许多优化方向,这些优化可以使得程序更好用;这时改怎么做?
你有多余的时间,闲着也是闲着,就优化呗,优化的经验多了,下次实现的时候就可以直接按最优解来,可以节约未来的时间
如果你没时间,那就先别忙着折腾
优化有许多方向
“优化”这个词本身就容易误导人
因为空间和时间都是有限的,要么你用空间换时间,要么你用时间换空间
只要不是代码写的太烂,其实空间和时间都不应该存在浪费的
你到底关心什么指标,就去优化那个指标,相应的其他指标就必须让步
不搞清楚什么指标是最关心的,胡乱优化,只会越优化越糟糕
-=-=-=-
比如那些3A大作,你以为的优化是全面提升性能,实际上要做的就是牺牲一部分视野中的分辨率以提高帧数
或者牺牲帧数提高画质
-=-=-=
回到你写的脚本问题
你关心响应速度,那就要多占用线程,以最短的时间完成任务
而如果你关心的是占用资源的多少,那就应该反过来,任务全放队列,单线程慢慢执行
连续特征离散化的基本假设,是默认连续特征不同区间的取值对结果的贡献是不一样的。
特征的连续值在不同的区间的重要性是不一样的,所以希望连续特征在不同的区间有不同的权重,实现的方法就是对特征进行划分区间,每个区间为一个新的特征。常用做法,就是先对特征进行排序,然后再按照等频离散化为N个区间。
在已经完成关键功能的脚本后,进行进一步优化可以提升脚本的性能和用户体验。以下是一些可以考虑的优化方法:
使用更高效的库和函数,例如使用numpy代替python内置的列表操作。
并行化和多线程处理:
使用并行化库(如multiprocessing)或分布式计算框架(如Dask)来实现并行计算。
内存和资源管理:
释放不再需要的资源和对象,避免内存泄漏。
编写可扩展和模块化的代码:
使用适当的设计模式和代码规范,使代码更加可读和易于理解。
引入缓存机制:
对于需要频繁读取或计算的数据,可以引入缓存机制来缓存结果,减少重复计算的时间。
进行性能测试和优化:
使用性能分析工具,如profiler,来找出脚本中的性能瓶颈。根据性能分析结果,有针对性地进行代码优化。
用户体验的优化:
总之,对于已经实现关键功能的脚本,优化可以提升脚本的性能和用户体验,但需要根据具体情况进行权衡和决策。在优化之前,可以先满足基本功能,然后根据需求和资源情况,决定是否进行进一步的优化。