哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

workbench.js 隨時(shí)間變化大小,右側(cè)兩個(gè)下降點(diǎn):VS Code 1.74 第一大跌幅結(jié)果來(lái)源于混淆壓縮私有屬性,VS Code 1.80 第二小跌幅來(lái)源于混淆壓縮 export。

混淆壓縮私有屬性

混淆壓縮源碼后 JavaScript 仍包含許多長(zhǎng)標(biāo)識(shí)符名稱如 extensionIgnoredRecommendationsService。作者本來(lái)以為 esbuild 已經(jīng)將這些標(biāo)識(shí)符簡(jiǎn)化了,比如:

const someLongVariableName = 123;

console.log(someLongVariableName);

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

const x = 123;

console.log(x);

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

盡管 esbuild 實(shí)現(xiàn)了混淆功能,默認(rèn)情況下只有當(dāng)確定混淆不會(huì)改變代碼行為時(shí)才對(duì)名稱進(jìn)行處理。

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

也就是說(shuō),esbuild 這種保守策略意味著許多無(wú)法確認(rèn)是否安全修改名稱被忽略了。

怎么辦呢?

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

解決思路:可以將 TypeScript 源碼進(jìn)行混淆,然后使用被改變標(biāo)識(shí)符名稱的新 TypeScript 進(jìn)行編譯。這種方式會(huì)使得對(duì)于是否無(wú)意間破壞了代碼有更高的把握。

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

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

如果該屬性需要被修改:

通過(guò)尋找未使用過(guò)的符號(hào)名稱計(jì)算出一個(gè)新名稱

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

當(dāng)然,也有一些例外需要處理:

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

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

在某些情況下,子類公開(kāi)繼承自父類受保護(hù)權(quán)限,在很多例子里面都屬于錯(cuò)誤操作,需要禁止此處進(jìn)行混淆。

這樣構(gòu)建成功后,混淆私有屬性后 VS Code 主要 workbench.js 文件大小從 12.3MB 降低至 10.6MB , 減少近 14%。這也帶來(lái) 5% 加載速度提高,因?yàn)樾枰獟呙栉谋玖繙p少。

混淆壓縮 export

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

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

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

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





審核編輯:劉清

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

    關(guān)注

    0

    文章

    138

    瀏覽量

    21644
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    526

    瀏覽量

    56526
  • AST
    AST
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2498
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    173

    瀏覽量

    9269

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

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】+VS Code 下瑞薩 RA4M2 開(kāi)發(fā)環(huán)境搭建與 GPIO 點(diǎn)燈實(shí)驗(yàn)教程

    一、前言 瑞薩RA4M2 系列芯片憑借高性能、低功耗與完善的生態(tài)支持,在工業(yè)控制、物聯(lián)網(wǎng)終端等領(lǐng)域得到廣泛應(yīng)用。相較于官方 e2 studio 集成開(kāi)發(fā)環(huán)境,VS Code 具備輕量化、可擴(kuò)展、跨
    發(fā)表于 04-15 15:12

    在MCUXpresso for VS Code中調(diào)用JLINK Script的三種方法

      對(duì)于MCU開(kāi)發(fā)者來(lái)說(shuō),VS Code憑借輕量、跨平臺(tái)、高可擴(kuò)展等優(yōu)勢(shì),已經(jīng)成為日常編碼的神器。然而長(zhǎng)期以來(lái),很多人只能把VS Code當(dāng)
    的頭像 發(fā)表于 03-02 09:27 ?3185次閱讀
    在MCUXpresso for <b class='flag-5'>VS</b> <b class='flag-5'>Code</b>中調(diào)用JLINK Script的三種方法

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

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

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

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

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

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

    程序員最常見(jiàn)謊言

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

    VS Code 中`xiaozhi-esp32` 項(xiàng)目文件夾 修改 I2C 設(shè)備地址為 `0x78`

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

    VS Code運(yùn)行 pytest_hello_world.py

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

    Joycode 無(wú)法跨項(xiàng)目讀取源碼怎么辦?MCP Easy Code Reader 幫你解決!

    Code Agent 幫我們分析邏輯和編寫(xiě)代碼,而無(wú)需手動(dòng)將源碼復(fù)制到對(duì)話框中發(fā)送給 AI,提高 Code Agent 準(zhǔn)確度和編碼效率。MCP 已發(fā)布 Github: easy-code
    的頭像 發(fā)表于 11-19 15:50 ?1265次閱讀
    Joycode 無(wú)法跨項(xiàng)目讀取源碼怎么辦?MCP Easy <b class='flag-5'>Code</b> Reader 幫你解決!

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

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

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

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

    奔赴熱AI,碼力全開(kāi)!Talkweb House@1024程序員日系列活動(dòng)圓滿收官

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

    開(kāi)鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開(kāi)源鴻蒙構(gòu)建大會(huì)圓滿落幕!

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

    SEGGER工具鏈集成到CMake和VS Code

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

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開(kāi)發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語(yǔ)言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開(kāi)發(fā)
    發(fā)表于 05-13 16:45
    彝良县| 阜康市| 绥棱县| 仁怀市| 天全县| 房产| 冀州市| 永定县| 北海市| 高清| 南投市| 馆陶县| 荣成市| 浙江省| 德保县| 河源市| 江安县| 上蔡县| 吴川市| 霞浦县| 高尔夫| 普格县| 万安县| 增城市| 南丰县| 密山市| 塘沽区| 青田县| 汉沽区| 金溪县| 澄江县| 洛南县| 新巴尔虎左旗| 高邮市| 北票市| 麻阳| 措美县| 常山县| 耒阳市| 土默特左旗| 胶南市|