09 | I/O优化(上):开发工程师必备的I/O优化知识
该思维导图由 AI 生成,仅供参考
I/O 的基本知识
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了开发工程师必备的I/O优化知识,从文件系统、磁盘到I/O架构模型进行了详细解析。作者首先强调了I/O操作的复杂性,涉及应用程序、文件系统和磁盘三者共同完成的流程。在介绍文件系统方面,详细解析了不同操作系统所采用的文件系统类型以及其I/O处理流程。对磁盘方面进行了深入解释,包括通用块层、I/O调度层和块设备驱动层的功能和作用。此外,文章还提到了实际案例和测试数据,并对未来Android主流文件系统进行了展望。通过深入浅出的方式,为开发工程师提供了全面的I/O优化知识,帮助他们更好地理解和应用这些知识。同时,还介绍了Android闪存的发展趋势和对手机性能的影响,以及解答了开发中常见的疑问,如文件损坏原因和I/O突然变慢的可能原因。总的来说,本文对于开发工程师来说是一份全面而实用的I/O优化指南。文章还介绍了I/O性能评估的核心指标,包括吞吐量和IOPS,并提供了多种测量I/O性能的方法,如使用proc、strace和vmstat等。最后,文章强调了I/O优化在性能优化中的重要性,并鼓励读者通过课后练习进一步加深对I/O的理解。文章内容丰富,涵盖了I/O优化的各个方面,对读者进行了全面而深入的指导。
《Android 开发高手课》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- menty请问,微信debug模式下,运行会很卡吗。目前我司的app在debug模式下就超卡,非得在debug=false下才运行顺畅,不知是何原因导致
作者回复: 是的,主要是因为 1.debug包代码没有经过proguard这些优化 2.debug模式下虚拟机一些运行策略 3.debug包大量的logcat
2019-04-0127 - Kenny张老师,你好,mmap技术是首先通过业缓存去拿数据,如果没有就发生缺页中断,然后发生物理io从磁盘拿数据到业缓存,然后再从业缓存拿数据,这样相对普通文件io就少了一次逻辑io(即与文件系统的io),是可以这样理解么?
作者回复: 对,少一次数据拷贝跟系统调用的时间
2018-12-274 - 程序员小跃真的是高手课,如果之前没看过内存分析的教程,有些东西我都不大懂
作者回复: 需要结合参考资料进一步学习
2019-03-131 - Lll"我们知道,CPU 和内存相比磁盘是高速设备,整个流程的瓶颈在于磁盘 I/O 的性能。"这句话好像有歧义,请问是笔误了吧?
作者回复: 这个意思就是cpu和内存都是高速设备,磁盘是低速设备
2019-02-171 - 一把紫茶壶请问下在文件遍历方面,(尤其是层级比较多的文件,例如微信的image2),有什么好的方案提高遍历速度吗?
作者回复: 小文件系统,后面会讲到
2018-12-281 - 有生丶之莲张老师好,之前遇到过一些anr,定位到firebase中的tokenRefresh这块方法,但是自己重写这个方法也就只是用SP把token保存下来,请问SP读写会导致这个吗?SP的apply和commit都试过,apply说是异步的,但主线程会等着保存完成的回调,是这样吗?
作者回复: 即使是异步,在一些时机也会强制等待
2018-12-271 - Geek_a24664你好老师,我遇到过在向文件中写入字符串时,最终发现文件中内容和写入顺序不太一致,能不能指点一下思路,现在毫无头绪
作者回复: 这个一般不太可能,可以hook写入的内容看看,可能是多线程的问题?
2019-09-07 - JoyceIO优化,应用层可以做什么
作者回复: 合理使用和监控IO操作,选择合适的存储方案
2019-06-20 - Kennyhi,张老师,刚你说业缓存在内存紧张的时候会被回收,那么发生GC一定会回收吗?还是说跟GC无关联?是有另外一套内存检测回收业缓存的机制?那么启动优化,除了资源重排,降低总内存也能提升io次数?
作者回复: 下一篇文章会讲到
2018-12-27 - 东方看到很多朋友提到SP的问题,SP造成ANR的原因大家也知道,我来说说我的经验。 1.把sdk中SP的实现剥离出来,重写Application的getSharedPreferencen方法。这里需要注意几点,a.低版本multidex,b.Activity Service中getSP的context必须是ApplicationContext。 2.上述的方案依然是普通File操作,解析xml,线上依然有fsync导致ANR。 3.自己使用mmap实现sp的映射,或者使用微信的MMKV,但是getAll方法需要自己兼容。 4.增加大kv的监控。 大家伙还有更好的方案可以继续交流2018-12-2820