chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

程序員神器VS Code再提速將內(nèi)置JS減小20%!

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-07-30 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Visual Studio Code 最近將其內(nèi)置的 JavaScript 大小減少了 20%,節(jié)省了超過 3.9 MB。這種減少不僅降低了下載和存儲需求,而且由于在運行 JavaScript 之前需要掃描的源代碼更少,因此也提高了啟動速度。這個減小是通過一個新的構建步驟 “名稱混淆壓縮” 實現(xiàn)的,而非刪除任何代碼或進行重大重構。

ff3bf892-2e16-11ee-815d-dac502259ad0.png? ff621108-2e16-11ee-815d-dac502259ad0.png

workbench.js 隨時間變化大小,右側兩個下降點:VS Code 1.74 第一大跌幅結果來源于混淆壓縮私有屬性,VS Code 1.80 第二小跌幅來源于混淆壓縮 export。

混淆壓縮私有屬性

混淆壓縮源碼后 JavaScript 仍包含許多長標識符名稱如 extensionIgnoredRecommendationsService。作者本來以為 esbuild 已經(jīng)將這些標識符簡化了,比如:

const someLongVariableName = 123;

console.log(someLongVariableName);

變?yōu)楦痰模?/p>

const x = 123;

console.log(x);

由于 JavaScript 以源文本形式發(fā)布,減少標識符名稱的長度實際上可以減小程序的大小。這種優(yōu)化可能看起來有些荒謬,但在 JavaScript 世界里確實頂瓜瓜。

盡管 esbuild 實現(xiàn)了混淆功能,默認情況下只有當確定混淆不會改變代碼行為時才對名稱進行處理。

因此,在實踐中,esbuild 只對局部變量名和參數(shù)名進行處理。

也就是說,esbuild 這種保守策略意味著許多無法確認是否安全修改名稱被忽略了。

怎么辦呢?

作者團隊最終利用 TypeScript 對混淆代碼進行驗證,正如 TypeScript 可以在常規(guī)代碼中捕獲未知的屬性訪問一樣,TypeScript 編譯器能夠捕獲到一個屬性已經(jīng)被混淆但對它的引用沒有正確更新的情況。

解決思路:可以將 TypeScript 源碼進行混淆,然后使用被改變標識符名稱的新 TypeScript 進行編譯。這種方式會使得對于是否無意間破壞了代碼有更高的把握。

同時,通過使用 TypeScript,可以真正找到所有私有屬性(而不是僅以 _ 開始的屬性),甚至還可以利用 TypeScript 的現(xiàn)有重命名功能來智能地重命名符號,而不會意外改變對象形狀。

他們提出了新的大致工作流程: 使用 TypeScript's AST 針對每個在代碼庫中發(fā)現(xiàn)的私有或受保護屬性:

如果該屬性需要被修改:

通過尋找未使用過的符號名稱計算出一個新名稱

使用 TypeScript 生成所有引用該屬性的重命名編輯 將所有重命名編輯應用于 TypeScript 源碼 編譯帶有修改過名稱的新編輯過的 Typescript 資源 結果大部分有效。

當然,也有一些例外需要處理:

當前類內(nèi)唯一性并不能滿足要求,在超類和子類之間也必須具備唯一性。根本原因是 TypeScripts 私有關鍵字只是一個編譯時裝飾器,并不能真正防止超級和子類訪問私有屬性。

如果不小心處理,則可能導致重新命名時產(chǎn)生名稱沖突(幸運地是 Typescript 將其報告為錯誤)。

在某些情況下,子類公開繼承自父類受保護權限,在很多例子里面都屬于錯誤操作,需要禁止此處進行混淆。

這樣構建成功后,混淆私有屬性后 VS Code 主要 workbench.js 文件大小從 12.3MB 降低至 10.6MB , 減少近 14%。這也帶來 5% 加載速度提高,因為需要掃描文本量減少。

混淆壓縮 export

另一方面,其實 provideWorkspaceTrustExtensionProposals 等長名字,或者 localize 函數(shù)(用于 UI 顯示字符串)明顯還有改善空間。

針對它的處理是:導出符號名稱。只要導出僅供內(nèi)部使用,就可以縮短它們而不改變代碼行為。

最終,經(jīng)過優(yōu)化,總體上文件比沒有進行名稱壓縮小了 20%。

在整個 VS Code 中,名稱壓縮從編譯源碼移除 3.9MB JavaScript 代碼,這既降低了下載大小和安裝大小,也使每次啟動 VS Code 需要掃描 JS 代碼量減少 3.9MB。





審核編輯:劉清

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

    關注

    0

    文章

    138

    瀏覽量

    21443
  • javascript
    +關注

    關注

    0

    文章

    525

    瀏覽量

    56163
  • AST
    AST
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2477
  • vscode
    +關注

    關注

    1

    文章

    172

    瀏覽量

    9073

原文標題:程序員神器VS Code再提速,將內(nèi)置JS減小20%!

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Claude Code在國內(nèi)怎么使用?AI編程人員必看的完整指南!

    : Claude Code在國內(nèi)無法直接訪問 。所以本篇內(nèi)容為大家介紹Claude Code為什么國內(nèi)用不了?程序員又該如何穩(wěn)定、合規(guī)地使用 Claude?本文一次講清。 一、Claude C
    的頭像 發(fā)表于 01-23 14:09 ?174次閱讀
    Claude <b class='flag-5'>Code</b>在國內(nèi)怎么使用?AI編程人員必看的完整指南!

    SN65LVDS20與SN65LVP20:高速差分收發(fā)神器揭秘

    SN65LVDS20與SN65LVP20:高速差分收發(fā)神器揭秘 在高速信號處理的領域中,差分信號的處理與傳輸一直是工程師們關注的焦點。德州儀器(TI)推出的SN65LVDS20和SN6
    的頭像 發(fā)表于 12-29 16:00 ?264次閱讀

    大理的AI野心藏不住了——風花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會暨大理人工智能與應用國際開發(fā)者大會在大理圓滿落幕。
    的頭像 發(fā)表于 12-24 17:45 ?578次閱讀
    大理的AI野心藏不住了——風花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    程序員最常見謊言

    了。 28我已經(jīng)測試過了,這個功能沒問題,可以上線了。 29別擔心,這個問題很快就能解決。 30代碼快寫完了,已經(jīng)完成 90% 了 。 希望大家對程序員多一些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點
    發(fā)表于 12-10 08:24

    VS Code 中`xiaozhi-esp32` 項目文件夾 修改 I2C 設備地址為 `0x78`

    VS Code 中`xiaozhi-esp32` 項目文件夾 修改 I2C 設備地址為 `0x78`
    的頭像 發(fā)表于 11-28 07:30 ?766次閱讀

    VS Code運行 pytest_hello_world.py

    VS Code運行 pytest_hello_world.py
    的頭像 發(fā)表于 11-24 00:33 ?499次閱讀

    如何在VS code中配置Zephyr集成開發(fā)環(huán)境

    上一篇文章介紹了如何在VS code中使用瑞薩官方插件為RA芯片創(chuàng)建項目與項目調(diào)試,相信大家對RA在VS code中的開發(fā)有了基礎的了解。
    的頭像 發(fā)表于 11-05 14:46 ?1344次閱讀
    如何在<b class='flag-5'>VS</b> <b class='flag-5'>code</b>中配置Zephyr集成開發(fā)環(huán)境

    項目效率翻倍!迅為RK3568?V2.0硬件接口升級,開發(fā)流程提速

    項目效率翻倍!迅為RK3568?V2.0硬件接口升級,開發(fā)流程提速
    的頭像 發(fā)表于 10-29 10:53 ?365次閱讀
    項目效率翻倍!迅為RK3568?V2.0硬件接口升級,開發(fā)流程<b class='flag-5'>再</b><b class='flag-5'>提速</b>

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官

    1024程序員日”系列活動至此劃上了一個圓滿句號。本屆1024程序員節(jié)以“AI構建世界,智能引領未來”為主題,廣邀技術大咖、產(chǎn)業(yè)領袖、企業(yè)代表與全球開發(fā)者齊聚星城
    的頭像 發(fā)表于 10-27 18:59 ?671次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促學、以賽選才”|1024程序員節(jié)暨開源鴻蒙構建大會圓滿落幕!

    10月24日,由開鴻智谷聯(lián)合主辦的長沙1024程序員節(jié)暨開源鴻蒙構建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術分享與實戰(zhàn)競賽相結合的方式,著力培養(yǎng)“開源鴻蒙+AI”領域
    的頭像 發(fā)表于 10-27 17:58 ?645次閱讀
    開鴻智谷“以賽促學、以賽選才”|1024<b class='flag-5'>程序員</b>節(jié)暨開源鴻蒙構建大會圓滿落幕!

    SEGGER工具鏈集成到CMake和VS Code

    SEGGER公司已將其嵌入式開發(fā)工具鏈集成到了廣泛使用的CMake構建配置工具中,這意味著基于Visual Studio CodeVS Code)代碼編輯器的應用開發(fā)可以方便的使用SEGGER工具實現(xiàn)了。
    的頭像 發(fā)表于 07-23 15:06 ?910次閱讀

    如何在VS Code中使用瑞薩RA系列MCU

    VS Code(Visual Studio Code)是微軟公司出品,它是一個免費且多功能的代碼編輯器,幾乎支持所有主要的編程語言和框架。特別是最近又新加了Github Copilot功能,讓用戶
    的頭像 發(fā)表于 04-16 14:02 ?3452次閱讀
    如何在<b class='flag-5'>VS</b> <b class='flag-5'>Code</b>中使用瑞薩RA系列MCU

    用MCP將百度地圖能力輕松接入DeepSeek

    是如何將百度地圖的能力接入DeepSeek。本文將詳細介紹通過MCP將百度地圖的能力接入DeepSeek,為用戶提供精準的智能規(guī)劃服務。 一,安裝VSCode和Cline插件 到VS Code官網(wǎng)
    的頭像 發(fā)表于 03-31 11:05 ?1818次閱讀
    用MCP將百度地圖能力輕松接入DeepSeek

    Nordic藍牙開發(fā)不用Keil用VS code了?

    加開發(fā)工具VS Code IDE插件完成產(chǎn)品一站式編譯、燒錄等開發(fā) nRF Connect SDK 是一款現(xiàn)代、統(tǒng)一的軟件開發(fā)工具包,用于構建基于 Nordic Semiconductor nRF52
    發(fā)表于 03-05 16:41

    長城炮全球化進程提速

    長城炮全球化進程提速!繼1月強勢登陸智利后,日前2.4T長城炮在南非正式上市,車型搭載2.4T+9AT強勁動力、智能豪華座艙,具備強大的越野性能,將以硬核產(chǎn)品實力,助力品牌加速搶占全球高勢能皮卡市場。
    的頭像 發(fā)表于 03-03 15:55 ?793次閱讀