डॉक संगीतकार पर चलता है, और एक विंडो जो अब उसके अंदर उपकरण को फिर से प्रस्तुत नहीं करती है

Performancekamo-internal
शिप
17 सितंबर 2026 को 7:43 pm बजे UTC
लेखक
Kamo
Commit
905fba8

एक पॉपअप टूल विंडो के बारे में सब कुछ जो MOVES - पंक्ति को फिर से पैक करना, एक स्ट्रिप के साथ व्यापारिक स्थान क्लिक करें, पीछे की पंक्ति से बाहर निकलना, एक खींचें, एक सीवन खींचें, अधिकतम फलक लेना और छोड़ देना - एक लेआउट पास की लागत थी और प्रत्येक खुला विंडो की सामग्री प्रति फ्रेम का एक पूर्ण रिएक्ट पुनः प्रस्तुत करना था। आठ विंडोज़ ओपन (हेडलेस क्रोम, पहले / बाद, तीन रनों के साथ डॉक दोहन में मापा गया प्रत्येक): - एक पट्टी क्लिक करें: 12-14 लेआउट पास -> 1, स्क्रिप्ट समय 87-104ms -> 44-52ms - एक 40-move title-bar खींचें: 168 विंडो CONTENTS के पुनः प्रस्तुतकर्ता -> 0, और 86 मजबूर लेआउट पढ़ता है -> 3 - बैकड्रॉप-फिल्टर परतें वास्तव में चित्रित: 8 का 8 -> 8 का 5 (केवल खिड़कियों के पीछे खड़े) हर विंडो एक ही पिक्सेल पर समाप्त होती है, और हर संक्रमण एक ही रास्ते पर यात्रा करता है। फ़्रेम: डॉक-> फ्लोट, फ्लोट-> डॉक, डॉक-> मैक्सिमाइज़्ड और मैक्सिमाइज्ड-> डॉक सभी सैंपल समान समापन बिंदु, समान चलती फ्रेम गिनती और समान सबसे बड़ा कदम। केवल पिक्सेल अंतर पर बाकी docked खिड़कियों में glyph किनारों पर subpixel antialiasing चरण है - समान स्थिति, समान स्ट्रोक वजन (2649 बनाम 2643 स्याही पिक्सेल), समान बढ़त ऊर्जा (5.47 बनाम 5.53)। क्या बदल गया: - एक docked विंडो को `translate` के बजाय `left`/`top` द्वारा रखा गया है, जिसमें होवर लिफ्ट को मोड़ दिया गया है। अन्य तीन रेजिमेंट 'left' / 'top' रखते हैं और बिल्कुल भी अनुवाद नहीं करते हैं, और हाथ से बंद सटीक है। क्योंकि सभी `left`, `top` और `translate` पहले से ही एक संक्रमण घड़ी साझा करते हैं: एक पर दो रैंप अंत बिंदुओं के बीच रैंप के लिए वक्र योग। Deliberately no `will-change` - यह कुछ नहीं खरीदा या तो जांच सत्र के लिए प्रति विंडो एक संगीतकार परत देख सकते हैं और खर्च कर सकते हैं। - `relayoutWindows` SAME सरणी का उत्तर देता है जब कुछ भी नहीं चला जाता है। यह हमेशा एक ही विंडोज़ का जवाब देता है और एक ताजा सरणी, इसलिए `store.relayout()` के पन्द्रह-odd कॉलरों में से हर एक - सहित स्क्रॉलबार सिंक जो दस्तावेज़ में कहीं भी किसी भी DOM उत्परिवर्तन के बाद 120ms चलाता है - फिर से प्रस्तुत विंडो सूची के हर पाठक। - `useToolWindowsStable()`: इसकी ज्यामिति के साथ विंडो सूची को नजरअंदाज कर दिया गया। सात उपकरण निकायों, सात उपकरण निकायों तीन अपठित पुल और उपलब्धि चौकीदार ने इसे एक बोलियन एपीस के लिए पढ़ा और कोई भी नहीं है कभी एक बॉक्स पढ़ने के लिए, इसलिए ऊंचाई-सीम ड्रैग अब स्क्रीन पर हर संदेश सूची को फिर से प्रस्तुत नहीं करता है। - `useToolWindowActions()`: कॉलबैक, पहचान द्वारा, इसलिए एक कॉलर जो केवल प्रेषण नहीं है फिर से एक खिड़की से चलती है। - `readViewport()` घटनाओं के बीच अपनी सही दूरी माप रखती है जो इसे बदल सकती है। The टूलडॉक में प्रस्तुत-चरण कॉल एक ड्रैग के दौरान एक सेकंड में एक गंदा लेआउट छः बार फ्लश कर रहा था। - `DockedToolWindow` और `ToolWindowBody`: प्रति विंडो और हर टूल के साथ एक मेमो सीमा कॉलबैक खिड़की के जीवन के लिए एक बार बाध्य। Memoized `MaximizedTabStrip`, `MaximizedTab`, `ChatNavigatorPanel`, `DockSnapIndicator`, `HexHeadSpring` और `HexHeadPopover` भी। - स्ट्रिप वील का 'बैकड्रॉप-फिल्टर' 'visibility: छिपा हुआ' है जब खिड़की पीछे नहीं है। यह असंतोषजनक रूप से संक्रमण होता है, इसलिए परत पेंट होने से पहले अभी भी फीका पूर्ण होता है। - हेक्सहेड फेंक पाश अब प्रति फ्रेम रीएक्ट स्टेट नहीं; धूमकेतु ट्रेल्स अपना खुद चलाते हैं एनिमेशन फ्रेम और SVG विशेषताओं को लिखते हैं, इसलिए एक फेंक पूरे चरण को फिर से प्रस्तुत करना बंद कर देता है। - जब यह पार्किंग ऑफ-फ्रेम के बजाय खत्म हो जाता है तो शीर्षक-बार आगमन स्वीप खुद को नीचे ले जाता है सत्र, और खोल के फ्रेमर कीफ्रेम को याद किया जाता है - पांच शाखाओं में से तीन एक वापस लौटते हैं कीफ्रेम ARRAY, इसलिए क्रॉस-डिसोल्व को फिर से शुरू करने के लिए उपयोग किए जाने वाले एक फिर से प्रस्तुत करने वाले मिड-स्वैप। `dockRenderCost.test.tsx` पिन यह सब गिनती के रूप में; रिलेआउट पहचान मामला HEAD पर विफल रहता है।.

सभी बदलाव

जैसा कि आप शिपिंग देखते हैं?

यह सब अपने कार्यक्षेत्र में आता है। मुफ्त योजना शुरू करें और इस पृष्ठ को एक महीने में फिर से पढ़ें।.

Foreverमूल्य निर्धारण देखें