日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

龍智DevSecOps ? 2025-02-12 15:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如需進一步了解IntelliJ IDEA,歡迎咨詢JetBrains授權(quán)合作伙伴-龍智。

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

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

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

我們的使命:改進代碼可交互時間

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

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

wKgZPGeTKO2AOO6ZAADB5TQdSwU816.png

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

改進項目打開流和體驗

在 IntelliJ IDEA 中改進啟動和項目打開的問題實際上非常復(fù)雜,因為它取決于多個組件及其互連。不過,這種復(fù)雜性也有好處,因為它可以讓我們從多個角度解決問題。在等待技術(shù)改進方面的長期工作取得成果的同時,我們還調(diào)整了 IntelliJ IDEA 的索引編制方式,用戶已經(jīng)可以體驗到在代碼可交互時間方面的顯著改進。

技術(shù)改進 >>

縮短代碼可交互時間的一個明顯方式是執(zhí)行技術(shù)更新以提高 IDE 的性能 – 優(yōu)化代碼和架構(gòu)、使用更好的硬件、并行化等。IntelliJ IDEA 已有 20 多年的歷史,早期的一些架構(gòu)和算法決策仍然存在于產(chǎn)品中。這方面的工作正在開展。我們投入了大量精力來適當(dāng)監(jiān)測、調(diào)查和優(yōu)化性能瓶頸,并且已經(jīng)取得了一些顯著成果。我們將應(yīng)用程序的啟動應(yīng)用程序性能指數(shù) (Apdex) 提升到頂級類別,得分為 0.94,將多線程索引編制的速度提高了 25%,并消除了并行索引編制過程中不必要的鎖,減少了其他線程等待此類鎖的時間。但這將是一個漫長的過程,因為重構(gòu)可能會對 IDE 中的其他子系統(tǒng)產(chǎn)生影響,需要經(jīng)過較長時間的仔細評估。
有關(guān)技術(shù)性能改進的更多詳細信息,請前往微信公眾號(龍智DevSecOps)觀看 Yuri Artamonov 的精彩演講(英文),并繼續(xù)關(guān)注更多文章。

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

分階段同步索引編制 >>

IDE 不一定需要技術(shù)改進,用戶就能體驗到它的速度提升。只要能夠更快開始工作,他們就會感受到性能改進。通過研究,我們了解到許多用戶認為,當(dāng)他們能夠看到項目結(jié)構(gòu)和正確的代碼高亮顯示時,IDE 就可以開始用于工作了。所以,這就是我們努力的重點。

IDE 必須執(zhí)行幾個關(guān)鍵步驟才能使高亮顯示和導(dǎo)航正常運作,但我們想知道這些步驟是否真的需要按順序依次執(zhí)行。2023.3 版本中一些很有前景的實驗表明,將同步和索引編制過程分為幾個階段并以異步方式運行,可以讓用戶更快地開始與代碼交互。

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

階段 1:跳過依賴項解析

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

階段 2:下載并解析依賴項

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

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

結(jié)果

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

wKgZPGeTKKqAcXGtAACVLetFHRU940.png

我們怎么知道是否值得?

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

下面的示例展示了項目樹的顯示速度和項目中高亮顯示的啟用速度有多快,以前訪問這些功能需要幾十秒的時間。

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

后續(xù)計劃

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

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

同時,我們希望您能享受我們在縮短代碼可交互時間方面取得的成果。

本博文英文原作者:Kerry Beetge

關(guān)于 IntelliJ IDEA

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

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

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

    關(guān)注

    0

    文章

    368

    瀏覽量

    49229
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3831

    瀏覽量

    52287
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74419
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    芯科科技發(fā)布Simplicity Studio 6軟件開發(fā)套件最新版本SiSDK 2025.12.0

    Silicon Labs(芯科科技)近期發(fā)布了Simplicity Studio 6軟件開發(fā)套件的最新版本-SiSDK 2025.12.0,這代表著嵌入式與無線軟件開發(fā)的一次重大進步。該版本重點關(guān)注
    的頭像 發(fā)表于 01-29 10:29 ?1407次閱讀

    蔚來世界模型NWM全新版本使用指南

    今天,「蔚來世界模型 NWM」全新版本正式開啟推送。首批超過46萬輛「Banyan 榕」車型將陸續(xù)收到推送?!窩edar 雪松」和「Cedar S 雪松」車型,也將于近期推送。此次,蔚來率先將「世界
    的頭像 發(fā)表于 01-29 09:13 ?827次閱讀

    蔚來世界模型NWM全新版本正式推送

    2026年1月28日,「蔚來世界模型 NWM」全新版本正式開啟推送,首批將為超過46萬輛「Banyan 榕」車型推送?!窩edar 雪松」車型及「Cedar S 雪松」車型,也將于近期開啟推送。
    的頭像 發(fā)表于 01-28 15:38 ?609次閱讀

    福祿克Versiv 7.0新版本有哪些亮點

    從Versiv 7.0開始,將不再支持TFS / Versiv 1 . 這一變化的原因是Versiv 7.0版本功能大幅提升,支持新的MPO測試模塊(CertiFiber Max)。 TFS / Versiv 1的內(nèi)存無法兼容這些新功能。
    的頭像 發(fā)表于 01-22 16:55 ?1039次閱讀

    客戶升級新版本的開發(fā)工具后,打開工程,有發(fā)現(xiàn)工程中系統(tǒng)字體找不到?

    客戶升級新版本的開發(fā)工具后,打開工程,有發(fā)現(xiàn)工程中系統(tǒng)字體找不到?
    發(fā)表于 01-20 15:16

    CW32 MCU用什么IDE開發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW32 MCU Pack包。
    發(fā)表于 11-12 07:52

    如何使用新版本J-Flash編程CW32 MCU

    1、從Segger公司官網(wǎng)下載安裝最新版本JLink驅(qū)動,比如V7.96a,安裝目錄下沒有JLinkDevices.xml文件。 2、C:Users<用戶名>
    發(fā)表于 11-12 07:24

    UART5.2.0版本E2S中的重定向

    隨著FSP庫版本更新到5.2.0,開發(fā)過程中就會發(fā)現(xiàn)4.0.0版本的串口重定義并不適用于最新版本。繼續(xù)使用原來的重定向代碼時,編譯器就會報
    的頭像 發(fā)表于 10-31 15:28 ?4190次閱讀
    UART<b class='flag-5'>在</b>5.2.0<b class='flag-5'>版本</b>E2S中的重定向

    【直播預(yù)告】RT-Trace 全新版本發(fā)布|ITM輸出 MemoryWatch 功能首發(fā)實測! | 問學(xué)直播

    RT-Trace迎來又一次重要更新!本次新版本帶來了兩項備受期待的功能——ITM輸出與MemoryWatch內(nèi)存監(jiān)控,讓調(diào)試可視化更高效、問題定位更精準(zhǔn)。為幫助開發(fā)者快速上手新特性
    的頭像 發(fā)表于 10-14 11:57 ?699次閱讀
    【直播預(yù)告】RT-Trace 全<b class='flag-5'>新版本</b>發(fā)布|ITM輸出  MemoryWatch 功能首發(fā)實測! | 問學(xué)直播

    原來正常的studio工程cubemx更新(遷移)版本后編譯報錯,怎么解決?

    cubemx更新(遷移)版本前編譯運行一切正常。 打開cubemx setting后提示有新版本可以更新(遷移) 點Continue或者Migrate后都會有一個更新package的過程,之后
    發(fā)表于 09-26 06:20

    新版本qemu編譯不過怎么解決?

    新版源碼 qemu-vexpress-a9編譯不過了。提示RT_PAGE_AFFINITY_BLOCK_SIZE 未定義
    發(fā)表于 09-24 07:20

    如何使用新版本J-Flash編程CW32 MCU?

    1、從Segger公司官網(wǎng)下載安裝最新版本JLink驅(qū)動,比如V7.96a,安裝目錄下沒有JLinkDevices.xml文件。 2、C:Users AppDataRoamingSEGGER目錄
    的頭像 發(fā)表于 07-01 15:05 ?1095次閱讀
    如何使用<b class='flag-5'>新版本</b>J-Flash編程CW32 MCU?

    戴爾數(shù)據(jù)保護軟件迎來全新版本

    無縫運行的異常檢測,一站式監(jiān)控多達150個系統(tǒng),額外的MFA多重身份驗證Dell PowerProtect Data Manager19.19全新版本現(xiàn)已到來!
    的頭像 發(fā)表于 06-27 13:55 ?1087次閱讀

    GUI Guider1.9.1新版本8大新亮點總結(jié) 為HMI開發(fā)注入新活力

    GUI Guider迎來了全新版本!這一次,我們帶來了多項重磅更新,旨在為大家提供更強大、更便捷的開發(fā)體驗。無論你是工業(yè)控制、智能家居,還是消費電子領(lǐng)域的開發(fā)者,這些更新都將為你的項目注入新的活力
    的頭像 發(fā)表于 05-09 08:48 ?3080次閱讀
    GUI Guider1.9.1<b class='flag-5'>新版本</b>8大新亮點總結(jié) 為HMI開發(fā)注入新活力

    樹莓派新版 OS 發(fā)布! bookworm 版本將成為歷史?

    。眾所周知,DebianLinux采用兩年發(fā)布周期——每逢奇數(shù)年便會推出一個新的主要版本。而今年是2025年,接下來幾個月內(nèi)將推出Debian“trixie”新版本。
    的頭像 發(fā)表于 05-08 15:33 ?1805次閱讀
    樹莓派<b class='flag-5'>新版</b> OS 發(fā)布! bookworm <b class='flag-5'>版本</b>將成為歷史?
    兴义市| 南木林县| 牡丹江市| 靖宇县| 襄城县| 洞口县| 镇安县| 乐亭县| 永宁县| 乌鲁木齐市| 广饶县| 东阿县| 兰坪| 石门县| 江陵县| 资兴市| 苏尼特右旗| 青岛市| 旬邑县| 临城县| 罗平县| 陇南市| 邮箱| 宁陵县| 宣化县| 阳曲县| 绥芬河市| 德钦县| 兴和县| 沂水县| 肥城市| 墨脱县| 江达县| 理塘县| 资兴市| 诸城市| 新巴尔虎右旗| 横峰县| 石台县| 河津市| 昭平县|