第10章 其他调优

10.1 编译时计算

如果程序中包含不依赖输入的计算,那么这些计算就可以提前在编译时完成而不是在运行时计算。

C++14标准提供了constexpr函数,C++17标准通过了if constexpr提供编译时分支。

10.2 编译器内建函数

可以强制编译器产生专门的汇编指令而不用编写底层的汇编语言,即编译器内建函数。一定要记住使用编译器内建函数的开发者必须自己处理安全方面的问题。

10.3 缓存预热

一些应用负载中时延最敏感部分的代码执行频率最低,导致关键代码和数据因为老化而被换出缓存。高频交易就是此类,摄取市场数据的代码路径最常被执行,而执行购买指令的代码路径很少被执行。缓存预热通过周期性运行时延敏感型代码来确保让它保存在缓存中,同时保证不会跟随任何不必要的动摇。

10.4 减少慢速浮点运算

对于非规范的数值进行运算,很容易就会变得非常慢。通过专用的宏可以在代码层面禁用非规范浮点数。

10.5 系统调优

系统固件、操作系统或内核让我们优化付之一炬,因为这类中断持续10ms~100ms。从红帽子指导手册可以找到x86系统的提示和建议来消除或显著减少来自系统BIOS、Linux内核和设备驱动程序等资源的缓存干扰以及许多其他应用干扰来源。

大多数开箱即用的平台都被配置为具有最佳吞吐量,同时尽可能地节省功耗。但是有些行业关心时延。此时就要牺牲总吞吐量或者消耗更多能源了。

关闭处理器的睡眠状态让其做好立即响应的准备。另一个是缓存锁定,即将部分CPU缓存预留给特定的数据集,这有助于优化应用程序中的内存延迟。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java工程师修炼之道第8主要介绍了性能调优的相关知识和技巧。以下是对该节内容的回答: 性能调优是Java工程师必须掌握的重要技能之一。通过对代码、系统和数据库进行优化,可以提升程序的执行效率和响应速度,提供更好的用户体验。 首先,了解程序性能瓶颈是进行性能调优的第一步。我们可以使用各种监测工具来分析程序的运行状态,如JProfiler、VisualVM等。通过监测工具,我们可以查看程序的各项性能指标,如CPU使用率、内存占用等,找出影响性能的瓶颈所在。 其次,通过合理使用数据结构和算法来改进程序性能。选择高效的数据结构和算法可以减少程序的时间复杂度和空间复杂度,提高程序的执行效率。优化算法可以通过避免重复计算、缓存计算结果等方式来实现。 另外,合理使用线程和并发编程可以加快程序的执行速度。Java提供了丰富的线程和并发库,如使用线程池来管理线程、使用并发集合来提高并发性能等。正确地使用线程和并发编程可以充分利用多核处理器的优势,提高程序的并发处理能力。 最后,对于大型系统来说,数据库的优化也非常重要。可以通过合理使用数据库索引、优化查询语句等方式来提高数据库的访问性能。同时,可以将数据库连接池引入系统中,减少数据库连接的创建和销毁所带来的性能损耗。 总而言之,Java工程师在进行性能调优时需要全面考虑各方面的因素,包括代码、系统和数据库等。通过分析性能瓶颈、优化算法和数据结构、合理使用线程和并发编程,以及对数据库进行优化,可以提升程序的执行效率和响应速度,从而提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值