博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM的重排序
阅读量:7188 次
发布时间:2019-06-29

本文共 424 字,大约阅读时间需要 1 分钟。

重排序是什么?重新排序?不可以这么单一的理解。

重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。重排序分为两类:编译器重排序和运行期重排序,分别对应编译时和运行时环境。

不要假设指令执行的顺序,因为根本无法预知不同线程之间的指令会以何种顺序执行。

一、编译器重排序

编译器重排序的典型就是通过调整指令顺序,在不改变程序语义的前提下,尽可能的减少寄存器的读取、存储次数,充分复用寄存器的存储值。

int a = 5;①            int b = 10;②              int c = a + 1;③          假设用的同一个寄存器

这三条语句,如果按照顺序一致性,执行顺序为①②③寄存器要被读写三次;但为了降低重复读写的开销,编译器会交换第二和第三的位置,即执行顺序为①③②

二、重排序的意义

重排序有利于充分使用流水线,进而达到的效果。

转载于:https://www.cnblogs.com/lfdingye/p/6737299.html

你可能感兴趣的文章
数据库--MyBatis的(insert,update,delete)三种批量操作
查看>>
vim下撤销操作.选中复制等操作
查看>>
eclipse各版本汉化地址
查看>>
基于SwiperJs的H5/移动端下拉刷新上拉加载更多
查看>>
泛型/泛型约束/协变逆变
查看>>
输入地址表(IAT)
查看>>
进程间通信 —— 命名管道
查看>>
各种环境配置
查看>>
QQ空间应用开发笔记
查看>>
OpenJudge 2756 二叉树
查看>>
请求一个短信接口,并接收该接口返回的状态值
查看>>
组织行为学笔记(2)——态度和工作满意度
查看>>
一边游,一边吃是最好的.
查看>>
spring boot启动报内存溢出的问题
查看>>
精妙SQL语句
查看>>
Jenkins TcpSlaveAgentListener Config
查看>>
山东理工ACM【1135】C/C++经典程序训练5---图形打印问题
查看>>
db2 Reorgchk:重组检查,是否需要重组
查看>>
spfa
查看>>
IO复用——epoll系列系统调用
查看>>