电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解Java編譯優化之循環展開和粗化鎖

瀏覽:70日期:2022-08-11 13:05:54
目錄循環展開和粗化鎖分析Assembly日志禁止Loop unrolling循環展開和粗化鎖

我們先來回顧一下什么是循環展開。

循環展開就是說,像下面的循環遍歷的例子:

for (int i = 0; i < 1000; i++) { x += 0x51;}

因為每次循環都需要做跳轉操作,所以為了提升效率,上面的代碼其實可以被優化為下面的:

for (int i = 0; i < 250; i++) { x += 0x144; //0x51 * 4}

注意上面我們使用的是16進制數字,至于為什么要使用16進制呢?這是為了方便我們在后面的assembly代碼中快速找到他們。

好了,我們再在 x += 0x51 的外面加一層synchronized鎖,看一下synchronized鎖會不會隨著loop unrolling展開的同時被粗化。

for (int i = 0; i < 1000; i++) { synchronized (this) {x += 0x51; }}

萬事具備,只欠我們的運行代碼了,這里我們還是使用JMH來執行。

相關代碼如下:

@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)@Fork(value = 1,jvmArgsPrepend = {'-XX:-UseBiasedLocking','-XX:CompileCommand=print,com.flydean.LockOptimization::test'})@State(Scope.Benchmark)@BenchmarkMode(Mode.AverageTime)@OutputTimeUnit(TimeUnit.NANOSECONDS)public class LockOptimization { int x; @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public void test() {for (int i = 0; i < 1000; i++) { synchronized (this) {x += 0x51; }} } public static void main(String[] args) throws RunnerException {Options opt = new OptionsBuilder().include(LockOptimization.class.getSimpleName()).build();new Runner(opt).run(); }}

上面的代碼中,我們取消了偏向鎖的使用:-XX:-UseBiasedLocking。為啥要取消這個選項呢?因為如果在偏向鎖的情況下,如果線程獲得鎖之后,在之后的執行過程中,如果沒有其他的線程訪問該鎖,那么持有偏向鎖的線程則不需要觸發同步。

為了更好的理解synchronized的流程,這里我們將偏向鎖禁用。

其他的都是我們之前講過的JMH的常規操作。

接下來就是見證奇跡的時刻了。

分析Assembly日志

我們運行上面的程序,將會得到一系列的輸出。因為本文并不是講解Assembly語言的,所以本文只是大概的理解一下Assembly的使用,并不會詳細的進行Assembly語言的介紹,如果有想深入了解Assembly的朋友,可以在文后留言。

分析Assembly的輸出結果,我們可以看到結果分為C1-compiled nmethod和C2-compiled nmethod兩部分。

先看C1-compiled nmethod:

詳解Java編譯優化之循環展開和粗化鎖

第一行是monitorenter,表示進入鎖的范圍,后面還跟著對于的代碼行數。

最后一行是monitorexit,表示退出鎖的范圍。

中間有個add $0x51,%eax操作,對于著我們的代碼中的add操作。

可以看到C1—compiled nmethod中是沒有進行Loop unrolling的。

我們再看看C2-compiled nmethod:

詳解Java編譯優化之循環展開和粗化鎖

和C1很類似,不同的是add的值變成了0x144,說明進行了Loop unrolling,同時對應的鎖范圍也跟著進行了擴展。

最后看下運行結果:

Benchmark              Mode  Cnt     Score     Error  Units

LockOptimization.test  avgt    5  5601.819 ± 620.017  ns/op

得分還不錯。

禁止Loop unrolling

接下來我們看下如果將Loop unrolling禁掉,會得到什么樣的結果。

要禁止Loop unrolling,只需要設置-XX:LoopUnrollLimit=1即可。

我們再運行一下上面的程序:

詳解Java編譯優化之循環展開和粗化鎖

可以看到C2-compiled nmethod中的數字變成了原本的0x51,說明并沒有進行Loop unrolling。

再看看運行結果:

Benchmark              Mode  Cnt      Score      Error  Units

LockOptimization.test  avgt    5  20846.709 ± 3292.522  ns/op

可以看到運行時間基本是優化過后的4倍左右。說明Loop unrolling還是非常有用的。

以上就是詳解Java編譯優化之循環展開和粗化鎖的詳細內容,更多關于Java編譯優化之循環展開和粗化鎖的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 飞象网 - 通信人每天必上的网站 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 书信之家_书信标准模板范文大全| 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 123悬赏网_发布悬赏任务_广告任务平台 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 自动配料系统_称重配料控制系统厂家 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 微型实验室真空泵-无油干式真空泵-微型涡旋耐腐蚀压缩机-思科涡旋科技(杭州)有限公司 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 |