日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gradle 编译速度提升 70%!怎么做到的?

發布時間:2024/9/3 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gradle 编译速度提升 70%!怎么做到的? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:Java 應用部署到預發通常都要等待漫長的編譯打包時間,本文將為大家講解提升編譯速度的方法。

原文鏈接

之前我司每個 Java 應用部署到預發都要等待漫長的編譯打包時間,非常地痛苦!大項目編譯時間常常達到接近 10 分鐘,生命短暫啊,人生有多少個 10 分鐘可以等待,于是我們的效能團隊針對編譯作了一些優化,提速非常明顯,對某個應用的測試來看,編譯時間從 160 s 縮短到了 50 s 左右,提升近 70%,大家紛紛點贊,那么效能團隊做了哪些措施來讓編譯速度提升這么明顯呢?
首先要說的是我們用的 Gradle 來作為我們的構建工具,所以主要是針對 Gradle 的命令來作了一些優化。

1、修改 gradle build 的參數

  • 使用 --build-cache

什么是 build cache(構建緩存),在 Gradle 中,每一個待編譯的工程叫 Project,每一個 Project 在構建時都包含一系列的 task。

每個 task 的輸入都可以作為下一個 task 的輸出,build cache 做的事就是把可以緩存(注:并不是所有的 task 輸出都能緩存)的 task 輸出都緩存住,這樣在構建過程中,如果發現這個 task 的輸入不變,就沒必要重新執行任務了,直接從 task ouput 緩存里拿即可,如下圖示,Build 2 的構建輸入直接從 Build Cache 中拿,這樣 Build 1 就不用構建了。

效果怎么樣呢,看下圖,下面圖分別顯示了 Gradle 持續集成時使用構建緩存和不使用構建緩存兩種情況下的聚合的構建時間,可以看到使用了 cache 的 Gradle 構建速度明顯快于不使用 cache 的情況。

更騷的是這個 Buiid Cache 支持分布式的,可以統一把這些 cache 丟到一臺機器上,本地機器要編譯時統一去這臺機器拉 cache,這樣如果我們切換分支時執行構建也能用 Build Cache 來加快構建速度。
--build-cache 的具有使用需要注意一些事項,比如得 Gradle 4.3 以上才有效,建議大家直接去官網查查看。

  • 增加 --parallel 參數

并行執行在多項目編譯的項目中能有效提升編譯的速度,但是并行執行的前提是每個項目已經被模塊化,每個項目之間沒有耦合。

  • 移除 --refresh-dependencies 參數

原來 gradle build 有加這個參數,這個參數會忽略緩存,強制重新下載,顯然是編譯的瓶頸。

2、任務并行

原來 Jenkins 中執行 Gradle 編譯任務,每個 Task 是串行執行的,總編譯耗時是每個任務執行時間的總和。

現在把它改成了并行的

顯然并行執行會快得多。

3、將大項目工程中的常用代碼抽成 jar 包

對于業務方來說,采用這種方式也是提升編譯速度的有效手段 ,將大量代碼抽成 jar 包,意味著它們本身就是字節碼了,在 gradle build 時就不用編譯啦。自然能提升整個工程的編譯打包時間。

來源 | 碼海
作者 | 碼海

原文鏈接:https://developer.aliyun.com/article/767051?

版權聲明:如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:developerteam@list.alibaba-inc.com 進行舉報,并提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。

總結

以上是生活随笔為你收集整理的Gradle 编译速度提升 70%!怎么做到的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。