在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

新版本 IDE 的啟動(dòng)速度變快了?原來是在背后做了這些!

龍智 ? 來源:jf_15970448 ? 作者:jf_15970448 ? 2025-01-24 13:49 ? 次閱讀

IntelliJ IDEA 功能強(qiáng)、范圍廣,因此對(duì)資源有一定需求。根據(jù)您正在處理的項(xiàng)目,IDE 可能會(huì)出現(xiàn)滯后,這自然會(huì)令人沮喪。

打開項(xiàng)目時(shí)也許是開發(fā)者需要等待的最常見場(chǎng)景。IntelliJ IDEA 需要加載和同步項(xiàng)目、執(zhí)行索引編制以及完成許多其他小任務(wù)才能啟用所有實(shí)用功能。

在這篇博文中,我們將介紹在新版本 IntelliJ IDEA 中為提高性能而采取的措施,這些措施縮短了代碼可交互時(shí)間并使 IDE 從啟動(dòng)開始就具有更高的響應(yīng)速度。

我們的使命:改進(jìn)代碼可交互時(shí)間

對(duì)于 2023.2 之前的 IntelliJ IDEA 版本,IDE 必須等待項(xiàng)目的 Maven 或 Gradle 項(xiàng)目模型完全同步后才能開始編制索引。然后,在等待索引編制完成時(shí),IDE 的所有智能功能都被禁用,包括代碼高亮顯示和導(dǎo)航。只有在索引編制完成后才能使用它們。

下面是相關(guān)組件的示意圖:

wKgZPGeTKO2AOO6ZAADB5TQdSwU816.png

項(xiàng)目越大,同步項(xiàng)目和編制項(xiàng)目索引所需的時(shí)間越長。雖然這在意料之中,因?yàn)榇笮晚?xiàng)目對(duì)于 IDE 來說更加復(fù)雜,但等待幾分鐘才能開始工作仍然有些糟糕。然而,由于加載項(xiàng)目時(shí)要執(zhí)行的步驟太多,即使是較小的步驟也會(huì)花費(fèi)大量時(shí)間,讓人感覺 IntelliJ IDEA 運(yùn)行緩慢。沒人喜歡等待,尤其是您想要投入工作的時(shí)候。因此,我們將改善這種狀況作為一項(xiàng)高度優(yōu)先的任務(wù)。為了衡量我們的進(jìn)度,我們決定跟蹤我們所謂的“代碼可交互時(shí)間”– 從應(yīng)用程序啟動(dòng)或項(xiàng)目打開到可以在其中正常處理代碼的時(shí)間。我們的目標(biāo)是盡可能縮短代碼可交互時(shí)間

改進(jìn)項(xiàng)目打開流和體驗(yàn)

在 IntelliJ IDEA 中改進(jìn)啟動(dòng)和項(xiàng)目打開的問題實(shí)際上非常復(fù)雜,因?yàn)樗Q于多個(gè)組件及其互連。不過,這種復(fù)雜性也有好處,因?yàn)樗梢宰屛覀儚亩鄠€(gè)角度解決問題。在等待技術(shù)改進(jìn)方面的長期工作取得成果的同時(shí),我們還調(diào)整了 IntelliJ IDEA 的索引編制方式,用戶已經(jīng)可以體驗(yàn)到在代碼可交互時(shí)間方面的顯著改進(jìn)。

技術(shù)改進(jìn) >>

縮短代碼可交互時(shí)間的一個(gè)明顯方式是執(zhí)行技術(shù)更新以提高 IDE 的性能 – 優(yōu)化代碼和架構(gòu)、使用更好的硬件、并行化等。IntelliJ IDEA 已有 20 多年的歷史,早期的一些架構(gòu)和算法決策仍然存在于產(chǎn)品中。這方面的工作正在開展。我們投入了大量精力來適當(dāng)監(jiān)測(cè)、調(diào)查和優(yōu)化性能瓶頸,并且已經(jīng)取得了一些顯著成果。我們將應(yīng)用程序的啟動(dòng)應(yīng)用程序性能指數(shù) (Apdex) 提升到

頂級(jí)類別

,得分為 0.94,將多線程索引編制的速度提高了 25%,并消除了并行索引編制過程中不必要的鎖,減少了其他線程等待此類鎖的時(shí)間。但這將是一個(gè)漫長的過程,因?yàn)橹貥?gòu)可能會(huì)對(duì) IDE 中的其他子系統(tǒng)產(chǎn)生影響,需要經(jīng)過較長時(shí)間的仔細(xì)評(píng)估。

在技術(shù)層面開展工作的同時(shí),我們還決定另辟蹊徑來解決 IDE 的感知性能問題。

分階段同步索引編制 >>

IDE 不一定需要技術(shù)改進(jìn),用戶就能體驗(yàn)到它的速度提升。

只要能夠更快開始工作,他們就會(huì)感受到性能改進(jìn)

。通過研究,我們了解到許多用戶認(rèn)為,當(dāng)他們能夠看到項(xiàng)目結(jié)構(gòu)和正確的代碼高亮顯示時(shí),IDE 就可以開始用于工作了。所以,這就是我們努力的重點(diǎn)。IDE 必須執(zhí)行幾個(gè)關(guān)鍵步驟才能使高亮顯示和導(dǎo)航正常運(yùn)作,但我們想知道這些步驟是否真的需要按順序依次執(zhí)行。2023.3 版本中一些很有前景的實(shí)驗(yàn)表明,

將同步和索引編制過程分為幾個(gè)階段并以異步方式運(yùn)行,可以讓用戶更快地開始與代碼交互。

因此,作為第一步,我們讓 IntelliJ IDEA 在實(shí)際從 Gradle 或 Maven 等底層構(gòu)建工具獲取項(xiàng)目模型之前開始對(duì)項(xiàng)目目錄中的文件編制索引。這樣做的缺點(diǎn)是,不必要的文件也被編入索引,并且與構(gòu)建工具同步后,需要重新編制索引。不過,根據(jù)我們的測(cè)試套件,整體代碼可交互時(shí)間(包括同步和完整索引編制)顯著縮短,在大型項(xiàng)目中的速度提高了 1.5 倍。但是,如果不加載項(xiàng)目模型,就無法正確建立項(xiàng)目各部分之間的關(guān)系、顯示正確的項(xiàng)目樹、高亮顯示或提供導(dǎo)航。為了解決這個(gè)問題,我們實(shí)現(xiàn)了所謂的分階段同步。我們讓 IDE 分階段獲取模型,而不是一次性從構(gòu)建工具請(qǐng)求完整項(xiàng)目模型。目前有兩個(gè)階段。

階段 1:跳過依賴項(xiàng)解析

在第一階段,即項(xiàng)目加載過程的早期階段,IntelliJ IDEA 不會(huì)解析依賴項(xiàng)或連接到互聯(lián)網(wǎng)。它只是提供一個(gè)足夠精確的模型,讓 IDE 能夠顯示項(xiàng)目樹、對(duì)項(xiàng)目中最必要的部分編制索引,并提供一些必要的智能功能。顯然,這個(gè)階段之后一些依賴項(xiàng)可能仍然缺失,從而導(dǎo)致解析問題,甚至出現(xiàn)代碼即使正確也被標(biāo)記為紅色的情況。IDE 實(shí)際上可以感知這些誤報(bào)錯(cuò)誤,并通過抑制因缺少依賴項(xiàng)而導(dǎo)致的錯(cuò)誤在個(gè)別語言支持級(jí)別解決這些問題。它還能正確處理帶有相應(yīng)消息的導(dǎo)航嘗試。自 2024.2 版本起,此錯(cuò)誤抑制適用于 Java,在 2024.3 版本中,支持已擴(kuò)展到 Kotlin。Maven 中第一階段尤其快速,因?yàn)樗撵o態(tài) pom.xml 配置文件可以由 IDE 解析而無需啟動(dòng) Maven,同時(shí)還能提供足夠的知識(shí)來構(gòu)建非常精確的模型。對(duì)于本質(zhì)上動(dòng)態(tài)且腳本非常靈活的 Gradle,IntelliJ IDEA 目前無法獨(dú)立解析腳本,這意味著它必須運(yùn)行 Gradle 守護(hù)進(jìn)程。通過僅向 Gradle 請(qǐng)求 sourceSets、必需語言級(jí)別和其他基本信息,我們加快了這一過程。不過,通過聲明式 Gradle 計(jì)劃,我們將來也許能夠帶來大幅改善。

階段 2:下載并解析依賴項(xiàng)

在第二階段,IntelliJ IDEA 下載所有插件和依賴項(xiàng),正確解析所有配置,并為 IDE 提供完全準(zhǔn)確的模型。然后,索引根據(jù)完整模型更新。通過這種兩階段方式,在依賴項(xiàng)下載和解析的同時(shí),您可以更快獲得幾乎功能齊全的 IntelliJ IDEA 版本。

作為一項(xiàng)額外改進(jìn),我們使許多功能在索引尚未就緒時(shí)也能運(yùn)行,進(jìn)一步縮短了代碼可交互時(shí)間。最重要的是個(gè)別文件中的代碼高亮顯示、部分代碼解析和運(yùn)行配置。當(dāng)然,準(zhǔn)備好底層索引會(huì)讓這些操作更快,但即使只有部分索引,它們也能可靠地工作。

結(jié)果

總體來看,整個(gè)流程現(xiàn)在是這樣的:

wKgZPGeTKKqAcXGtAACVLetFHRU940.png

我們?cè)趺粗朗欠裰档茫?/p>

根據(jù)項(xiàng)目,我們測(cè)試套件中的代碼可交互時(shí)間(或者更準(zhǔn)確地說,以上架構(gòu)中完全高亮顯示之前的時(shí)間)在第一次打開項(xiàng)目時(shí)速度最多能快上幾倍。

調(diào)查顯示,大約 30% 的用戶認(rèn)為 IntelliJ IDEA 2024.2 讓他們能夠更快開始編碼。

后續(xù)計(jì)劃

雖然并非所有 IntelliJ IDEA 功能都能在編制項(xiàng)目索引時(shí)使用,但兩階段同步方式無疑加快了整體啟動(dòng)性能,讓您更快地開始與代碼交互。此外,我們還使許多操作與沒有索引或只有部分索引的情況兼容。在 2024.2 版本中,大約 10% 的用戶確實(shí)在整個(gè)同步和索引編制過程完成之前編寫代碼。但我們的工作還沒有結(jié)束。

我們現(xiàn)在的目標(biāo)是改進(jìn)分階段同步,尤其是與 Gradle 的同步,進(jìn)一步縮短代碼可交互時(shí)間。我們還在更新依賴項(xiàng)尚未解析時(shí)處理項(xiàng)目的用戶體驗(yàn)。

同時(shí),我們希望您能享受我們?cè)诳s短代碼可交互時(shí)間方面取得的成果。

本博文英文原作者:Kerry Beetge

關(guān)于 IntelliJ IDEA

JetBrains 的旗艦 IDE IntelliJ IDEA 專為高效的 JVM 開發(fā)而設(shè)計(jì)。憑借對(duì)語言和技術(shù)的深入了解以及符合人體工程學(xué)的用戶界面,IntelliJ IDEA 使開發(fā)成為愉悅的體驗(yàn)!

免費(fèi)的開源 IntelliJ IDEA 社區(qū)版和 IntelliJIDEA Edu 也可以用于學(xué)習(xí)和教學(xué)編程。

咨詢JetBrains授權(quán)合作伙伴-龍智,進(jìn)一步了解 IntelliJ IDEA:

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IDE
    IDE
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    46842
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    索尼發(fā)布空間現(xiàn)實(shí)顯示播放器新版本

    索尼于2024年12月發(fā)布適用于空間現(xiàn)實(shí)顯示屏ELF-SR1和ELF-SR2的空間現(xiàn)實(shí)顯示播放器新版本。
    的頭像 發(fā)表于 12-24 15:19 ?234次閱讀

    特斯拉發(fā)布“完全自動(dòng)駕駛”軟件最新版本FSDV13.2

    近日,特斯拉終于推出了備受期待的“完全自動(dòng)駕駛”軟件最新版本——FSD V13.2。盡管此前曾承諾感恩節(jié)之前發(fā)布,但特斯拉還是11月份的最后時(shí)刻兌現(xiàn)了承諾,展現(xiàn)了其人工智能團(tuán)隊(duì)的不懈努力和重要進(jìn)展。
    的頭像 發(fā)表于 12-03 10:59 ?693次閱讀

    經(jīng)緯恒潤INTEWORK-VBA新版本正式發(fā)布

    和前后端信息傳遞的壓力。面對(duì)這一問題,經(jīng)緯恒潤積極響應(yīng)市場(chǎng)需求,正式推出INTEWORK-VBAV3系列新版本,整合仿真、診斷、標(biāo)定和測(cè)試等多個(gè)應(yīng)用場(chǎng)景,一站式解
    的頭像 發(fā)表于 11-01 08:00 ?327次閱讀
    經(jīng)緯恒潤INTEWORK-VBA<b class='flag-5'>新版本</b>正式發(fā)布

    達(dá)索系統(tǒng)SOLIDWORKS2025新版本即將來襲

    里程碑式的新版本——SOLIDWORKS?2025。這一新版本不僅集成了眾多用戶驅(qū)動(dòng)的增強(qiáng)功能,還在協(xié)作、設(shè)計(jì)和性能上實(shí)現(xiàn)了重大突破,預(yù)示著CAD設(shè)計(jì)領(lǐng)域的新一輪創(chuàng)新與升級(jí)。
    的頭像 發(fā)表于 10-12 14:18 ?733次閱讀

    品英Pickering最新版本的微波開關(guān)設(shè)計(jì)工具, 增強(qiáng)了仿真能力和原理圖設(shè)計(jì)功能

    這 款免 費(fèi) 線 工具的最新版本將在 EuMW 2024(9 月 24 日至 26 日,法國巴黎)上首次亮相,該版本的開關(guān)配置功能尤為突出。 ? 2024年9月25日,英國
    發(fā)表于 09-25 09:05 ?188次閱讀
    品英Pickering最<b class='flag-5'>新版本</b>的微波開關(guān)設(shè)計(jì)工具,  增強(qiáng)了仿真能力和原理圖設(shè)計(jì)功能

    經(jīng)緯恒潤INTEWORK-TPA 新版本正式發(fā)布

    正式推出INTEWORK-TPA5.2.0新版本,以科技的力量,為用戶帶來更智能的體驗(yàn)升級(jí)!▎AI助力,高效測(cè)試新版本的AI小助理上線了!借助她的AI大模型能力,測(cè)試
    的頭像 發(fā)表于 08-30 11:46 ?496次閱讀
    經(jīng)緯恒潤INTEWORK-TPA <b class='flag-5'>新版本</b>正式發(fā)布

    GUI Guider V1.8.0全新版本正式上線

    在這個(gè)充滿創(chuàng)新與挑戰(zhàn)的時(shí)代,我們深知高效、靈活的GUI設(shè)計(jì)工具對(duì)人機(jī)交互應(yīng)用的重要性。經(jīng)過幾個(gè)月的精心打磨與測(cè)試,GUI Guider V1.8.0全新版本正式上線了!本次更新不僅帶來了前所未有的設(shè)計(jì)自由度,更在功能優(yōu)化與用戶體驗(yàn)上實(shí)現(xiàn)了質(zhì)的飛躍。
    的頭像 發(fā)表于 08-02 09:26 ?920次閱讀

    谷歌DeepMind發(fā)布人工智能模型AlphaFold最新版本

    谷歌DeepMind近日發(fā)布了人工智能模型AlphaFold的最新版本——AlphaFold 3,這一革命性的工具將在藥物發(fā)現(xiàn)和疾病治療領(lǐng)域發(fā)揮巨大作用。
    的頭像 發(fā)表于 05-10 11:26 ?620次閱讀

    CANoe新版本18正式發(fā)布

    新版本持續(xù)為電動(dòng)智能軟件開發(fā)測(cè)試帶來系列化的新功能,新版本CANoe產(chǎn)品體系包括具有GUI交互的桌面版本、可部署服務(wù)器后云端的服務(wù)器版本
    的頭像 發(fā)表于 05-09 08:25 ?4048次閱讀
    CANoe<b class='flag-5'>新版本</b>18正式發(fā)布

    用的IAR For STM8最新版本3.10.2 ,編譯提示錯(cuò)誤的原因?

    用的IAR For STM8最新版本3.10.2 ,編譯提示錯(cuò)誤Error[Li005]: no definition for \"main\" [referenced from cstartup.o(dlstm8smf.a)],有誰知道是哪里的問題?謝
    發(fā)表于 04-30 08:00

    請(qǐng)問最新版本的FOC SDK不支持ACIM電機(jī)嗎?

    新版本的FOC SDK不支持ACIM電機(jī)嗎?驅(qū)動(dòng)采用的是 STEVAL-IHM034V2 演示板,請(qǐng)問那個(gè)版本支持ACIM,需要用到PFC.
    發(fā)表于 04-12 06:16

    華為云 GeminiDB 發(fā)布新版本,全面支持 Redis 6.2

    月上線的新版本,GeminiDB 已全面支持 Redis 6.2,用戶可在華為云 GeminiDB 產(chǎn)品官網(wǎng)購買使用。新版本的 GeminiDB 發(fā)布了一系列增強(qiáng)功能,為用戶帶來云原生、高性能和易
    的頭像 發(fā)表于 04-08 18:22 ?1167次閱讀
    華為云 GeminiDB 發(fā)布<b class='flag-5'>新版本</b>,全面支持 Redis 6.2

    關(guān)于博達(dá)透傳工具新版本升級(jí)公告

    ,新版本原有版本上,對(duì)遠(yuǎn)傳透傳與聯(lián)網(wǎng)配置進(jìn)行了結(jié)合,將操作流程進(jìn)行精簡,操作會(huì)更為簡潔方便,只需一個(gè)工具就能搞定。升級(jí)內(nèi)容1透傳配置界面升級(jí)透傳配置界面上著重UI升級(jí)
    的頭像 發(fā)表于 03-19 08:33 ?507次閱讀
    關(guān)于博達(dá)透傳工具<b class='flag-5'>新版本</b>升級(jí)公告

    STMCWB最新版本是否支持絕對(duì)值編碼器?只能通過MCLIB庫手動(dòng)增加嗎?

    1.STMCWB最新版本是否支持絕對(duì)值編碼器?只能通過MCLIB庫手動(dòng)增加嗎? 2.基于ST FOC庫的磁編碼器(SPI出絕對(duì)角度信息)只跑速度環(huán)和電流環(huán)最簡單
    發(fā)表于 03-07 06:11

    谷歌發(fā)布AI新版本Gemini 1.5

    谷歌近日宣布推出其最新的人工智能(AI)版本——Gemini 1.5,這一新版本文本處理能力上實(shí)現(xiàn)了重大突破。據(jù)了解,Gemini 1.5 Pro的上下文窗口長度已經(jīng)擴(kuò)展到驚人的100萬個(gè)
    的頭像 發(fā)表于 02-19 11:05 ?1204次閱讀
    主站蜘蛛池模板: 国产色爽女| 一色屋免费视频 | 天天拍夜夜添久久精品免费 | 黄在线观看在线播放720p | 午夜国产精品理论片久久影院 | 中文字幕一区二区三区乱码aⅴ | 性欧美成人免费观看视 | 日本19xxxxxxxxx69| 亚洲高清免费在线观看 | 亚洲精品456 | 成人免费淫片95视频观看网站 | 亚洲一区二区在线 | 成人亚洲欧美综合 | 国产精品莉莉欧美自在线线 | 在线观看免费视频 | 年下系列高h文 | 五月天婷婷影院 | 亚洲国产成人久久午夜 | a在线观看网站 | 国产尤物在线视频 | 激情五月激情综合网 | 四虎最新紧急入口 | 天天看天天摸天天操 | 婷婷激情视频 | 天天爽天天狼久久久综合 | 亚洲视频一区在线 | 一级一级特黄女人精品毛片 | 黄色免费毛片 | 中文字幕在线二区 | 13日本xxxxxxxxx18 1515hh四虎免费观38com | 成人国产日本亚洲精品 | 日本黄色片视频 | 色婷婷激婷婷深爱五月小说 | 国产高清在线精品一区 | 欲色视频 | 一级特黄aaa大片在线观看 | 夜夜操天天射 | 在线最新版www资源网 | 国产一级aa大片毛片 | 天天射天天做 | 97天天操 |