IO优化原则

IO优化原则,第1张

通常I/O *** 作,需要经过CPU处理,从网络、内存、磁盘读取数据,最终都会影响电量的消耗。所以,在一般应用开发中,合理的处理I/O *** 作,对提升应用的性能至关重要,I/O优化遵循以下四个原则:

1.减少I/O *** 作

一种方式是采取缓存的方式,比如读取磁盘的数据是非常昂贵的,我们对磁盘读取出来的数据尽量的缓存起来,不要每次都去磁盘读取。

另一种方式是通过合并I/O *** 作的方式,比如我们打开一个定时器,每隔一段时间去访问一次文件,但很多时候文件并没有发生变化,这样访问是没有意义的,我们可以将访问的频率修改为当文件每发生一次变化,我们再每隔一段时间去访问数据。

2、使用正确的线程处理I/O

应用启动后,会开启一个主线程,处理用户的输入输出及界面绘制,如果我们把一些比较耗时的 *** 作放到主线程后,将会大大降低应用处理用户交互的行为,会使用户感觉到卡顿,不流畅等问题。所以,耗时的 *** 作要放到子线程去做,等任务结束后,再去通知主线程更新界面;

3、采用合适高效的API处理I/O

苹果提供了Asset图片管理器的方式去管理应用里用到的素材,通过这种方式,系统可以快速的找到图片的位置,进而减少图片读取的时间,imageNamed的方式加载图片,系统也做了缓存,对于加载过的图片,系统下次加载的话,可以快速的读取到图片的内容。

图片的渲染方式也有很多种方式,通过UIImageView,CoreGraphics、CoreImage三种方式,加载UIImage的过程需要经过解码、绘制的过长,特别是解码是一个非常耗时的 *** 作,这方面也可以优化,提升应用的性能;

4、对应用的性能进行I/O性能测试和测量

苹果提供了很多工具,可以通过Time Profiler工具去检测应用里的耗时 *** 作,进而去具体优化;

以上4中为I/O优化的方法,具体在开发过程中,需要从多方面考虑影响应用性能的条件,进而提升应用的整体性能。

设定合适的编译优化选项。

STM32正常运行时对程序运行效率要求不是很高,但是在中断中要求快进快出,尤其是中断数量多且中断里处理的任务较多时,对程序的运行时间及效率要求比较苛刻,可以从以下几点优化程序:设定合适的编译优化选项

Optimization level -O0

-O0禁用所有优化。使用-O0可以加快编译和构建时间,但是生成的代码比其他优化级别要满。与其他优化级别相比,-O0的代码大小和堆栈使用率明显要高。生成的代码与源代码密切相关,但生成的代码要多得多,包括死代码。

Optimization level -O1

-O1支持编译器中的核心优化。因为这个级别比-O0提供了更好的代码质量,因此它能提供了很好的调试体验。堆栈的使用也在-O0的基础上有所提高。为了获得良好的调试体验,Arm推荐使用此选项。

两个办法:一、优化硬件(CPU、内存和硬盘等),优化I/O子系统,增强IO读写能力;第二、优化SQL语句。第一种办法治标不治本,建议用第二种办法,你的截图里边那几个几百秒的SQL语句是有问题的,要进一步优化。查看一下执行这些语句是在哪些页面,查询了什么数据,数据量多大,判断一下业务逻辑,然后再去优化。

(如有帮助,请采纳,谢谢)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11804543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存