تعمّق

هندسة UI في عصر الذكاء الاصطناعي

كان Web متعدد المنصات إجابة جيدة قبل الذكاء الاصطناعي. أصبحت كتابة الكود أقل كلفة، لكن التحقق منه لم يصبح كذلك. وهذا يفتح المجال أمام GPU UI وتوليد تطبيقات أصلية لكل منصة مباشرة. اختبرنا 10 أطر عمل.

أصلييُمنع إعادة النشر دون إذن

ثلاث نوافذ تمثل الويب والرسم الذاتي عبر GPU والتطبيقات الأصلية، وتلتقي خطوطها عند علامة تحقق حمراء.

في 12/12/2025، أغلق مهندس Zed، mikayla-maki، طلب PR يقترح إضافة shader مخصص إلى GPUI. كان الرد مهذبًا. شكر صاحب المساهمة، ثم قال: “we’re shifting focus to core product work at Zed, and without a Zed use case, I can’t validate this code”. وأنهى الرد بوجه مبتسم.

GPUI هو إطار واجهات GPU الذي طوّرته Zed بنفسها. ويتكرر ذكره عند مناقشة بدائل Electron. وقبل ذلك بأقل من أربعة أشهر، كانت Zed قد أعلنت جمع 32,000,000 دولار في جولة بقيادة Sequoia، ليتجاوز إجمالي تمويلها 42,000,000 دولار.

بعد أكثر من تسعة أشهر، في 26/9/2026، أنشأ المطوّر egoist مستودعًا باسم MyGo. وبعد 39 يومًا، ضم المستودع 1,042 عملية commit، حملت 890 منها توقيع Claude.

Claude من تطوير Anthropic. وتطبيق Anthropic المكتبي نفسه يستخدم Electron.

تبدو هذه الوقائع الثلاث غريبة بعض الشيء حين توضع معًا. اختبرنا 10 أطر عمل على جهازين لنعرف أين وصل هذا المجال.

01خلفية التقييم

ما زالت تطبيقات سطح المكتب مثل Claude وCodex تستخدم Electron: منظومة Web ناضجة، وقاعدة شيفرة واحدة تدعم منصات متعددة، والنماذج تعرفها جيدًا. يقلل الذكاء الاصطناعي تكلفة التطوير، لكن التوافق بين المنصات والصيانة ما زالا يتطلبان جهدًا.

يوفر الرسم الذاتي عبر GPU مسارًا آخر، لكن GPUI ما زال يعطي الأولوية لـ Zed. يحتاج الرسم عبر المنصات ومنظومة المكونات إلى استثمار طويل الأجل. يوضح MyGo كيف يسرّع الذكاء الاصطناعي والمكونات الجاهزة الانطلاق، لكن النضج في الإنتاج وقابلية الصيانة طويلة الأجل لم يُثبتا بعد.

تتبنى Flutter وCompose وSlint وegui وiced مفاضلات مختلفة. اختبرنا 10 أطر بالسيناريوهات نفسها، وقسنا السلاسة وCPU والذاكرة ودقة مطابقة التصميم لمعرفة التكلفة الفعلية لكل مسار.

02أجرينا اختبارات محلية

اختبرنا 10 أطر بالسيناريوهات نفسها على Apple M4 Max وThinkPad T14 Gen6. قسنا CPU والذاكرة على المنصتين؛ ولـ Windows أيضًا قياسات خارجية للإطارات عبر PresentMon. تختلف تعريفات استدعاءات الإطارات في Mac بين الأطر، فلا نستخدمها للمقارنة. كما تختلف الأجهزة ومقاييس الذاكرة، لذا نحصر المقارنة داخل كل منصة.

مشهد الحركة كثيف: 500 بطاقة بحجم 96×64 بكسل منطقي، موزعة بتداخل على 25 عمودًا. لكل بطاقة زوايا بنصف قطر 12 وتدرج بزاوية 135° وظل بقيمة blur 16 وإزاحة لأسفل قدرها 4. تتحدث مواضع جميع البطاقات مع كل إطار، وتدور حول مراكزها بنصف قطر 12 ودورة مدتها 4 ثوانٍ. نعرض وسيط خمس جولات مدة كل منها 30 ثانية.

نقيس أساسًا تكلفة CPU لتحديث الواجهة وتجهيز الرسم وإرسال التصيير أثناء حركة عناصر كثيرة ذات تأثيرات باستمرار، ومدى انتظام إخراج الإطارات. تشمل CPU شجرة عمليات التطبيق، وليست استخدام GPU أو تفصيل زمن كل مرحلة. يجب قراءتها مع فواصل الإطارات؛ فإخراج إطارات أقل قد يخفض CPU أيضًا. العدد 500 هو عدد البطاقات في المشهد، لكن التداخل والقص عند حدود النافذة يعنيان أنها لا تُرسم كلها بالكامل في كل إطار.

500 بطاقة مستديرة الزوايا بألوان زرقاء وبنفسجية متداخلة، مع تدرجات وظلال
الشكل 1مشهد اختبار ضغط الحركة: 500 بطاقة بتدرجات وظلال. Electron / macOS، لقطة من تطبيق الاختبار مع تثبيت الحركة عند موضع البداية.

Windows

الجدول 1قياسات Windows، وسيط 5 جولات. الإطارات هي فواصل العرض p95 بوحدة ms؛ وتعني 8.3 بلوغ 120Hz بالكامل. نواة منطقية واحدة تعادل 100% من CPU. الذاكرة هي private commit بوحدة MiB.
الإطارإطار القائمةإطار الحركةCPU البثCPU التحريرCPU الحركةذاكرة الحركة
WPF (أصلي)8.668473%13%49%2,425
Electron8.810831%92%138%947
Tauriغير صالح9254%105%148%913
GPUI8.616.724%4%22%142
MyGo8.48.611%6%33%115
egui8.88.512%20%49%388
iced8.98.520%3%25%215
Slint8.58.527%99%67%61
Flutter8.48022%105%91%4,934
Compose8.816034%106%102%2,422

واكبت جميع الأطر تمرير القائمة. ظهر الفرق في الحركة: مع 500 بطاقة بظلال وتدرجات، حافظت أطر الرسم الذاتي المكتوبة بـ Rust وGo عمومًا على 120Hz. أما Flutter وElectron وTauri وCompose فوصلت فواصل الإطارات فيها إلى 80–160ms. جاءت نتيجة WPF البالغة 684ms من 500 تأثير ظل مستقل. وعادت إلى 8.3ms عند إيقافها، لذا ليست مشكلة عامة.

تحرير النص عقبة أخرى. عند إدخال 10 محارف في الثانية في مستند من 5,000 سطر، استهلك كل من Flutter وCompose وSlint نواة كاملة. وفقد Flutter على Windows ثلاثين بالمئة من المدخلات أيضًا.

Mac

الجدول 2قياسات Mac، وسيط 5 جولات. CPU: النواة المنطقية الواحدة تساوي 100%؛ الذاكرة: phys_footprint (MiB). لم يكن الجهاز خاملًا أثناء الاختبار. لا تُعرض معدلات إطارات قابلة للمقارنة بين الأطر.
الإطارCPU البثCPU التحريرCPU الحركةذاكرة القائمةذاكرة الحركة
SwiftUI87.5%8.9%99.1%4037
Electron16.1%62.0%102.2%536698
Tauri42.1%86.9%78.7%753555
GPUI22.5%2.9%17.0%341335
MyGo8.2%2.8%16.3%368371
egui8.6%7.2%20.4%803839
iced18.2%7.5%15.0%489491
Slint18.4%52.1%26.7%423416
Flutter18.3%101.9%237.4%468994
Compose31.3%105.1%107.5%7101,295

على Mac، بلغ CPU للحركة نحو 15%–20% لدى GPUI وMyGo وegui وiced، مقابل 237% لدى Flutter ونحو 100% لدى Electron وCompose. عند تحرير النص، ظل Flutter وCompose قريبين من استهلاك نواة كاملة. سجل Slint نسبة 52%، أقل من نسبته البالغة 99% على Windows.

في مشهد القائمة، تصف أرقام SwiftUI نحو 40 MiB وGPUI نحو 340 MiB وegui نحو 800 MiB بصمة عمليات التطبيق أولًا. يمكن للواجهة الأصلية استخدام خدمات تصيير النظام خارج العملية: توضح Apple أن AppKit يفضل تصيير شجرة الطبقات خارج العملية، لذا يجري جزء من الرسم والتركيب خارج التطبيق. تستخدم محركات الرسم المخصصة تركيب النظام أيضًا، لكن أرقام التطبيق وحدها لا تقارن توزيع العمل بين المسارين. تعني الذاكرة الموحدة في شرائح M اشتراك CPU وGPU في الذاكرة الفعلية، لا احتساب كل التكاليف ضمن phys_footprint للتطبيق.

في خمسة تتبعات GPU قصيرة لكل من مشهدي القائمة والحركة في SwiftUI، لم تُرصد أحداث تنفيذ GPU لمعرّف عملية التطبيق، بينما كان WindowServer نشطًا. لا يعني ذلك أن SwiftUI لا يستخدم GPU، ولا يجوز نسب نشاط سطح المكتب كله إليه. تقلب خط أساس ذاكرة WindowServer بنحو 205 MiB؛ وعدم ظهور كائنات مشتركة كبيرة في اللقطات لا يستبعد إعادة استخدام موارد النظام الموجودة. تثبت البيانات انخفاض بصمة عملية SwiftUI فقط، لا انخفاض التكلفة الكاملة للتصيير ولا تحمّل النظام كامل الفارق.

هذه الأرقام تخص هذين الجهازين وهذه الإصدارات وبرامج الاختبار التي كتبناها فقط. المنهج والبيانات الكاملة في القسم 05.

03لم تكن المسألة يومًا اختيار واحد فقط

تختلف متطلبات المحررات وأدوات التطوير وتطبيقات الأعمال في إدخال النص والحركة والذاكرة والتوزيع عبر المنصات ومنظومة المكونات. لكل منها سيناريوهاته، واختيار إطار يعني تحديد المفاضلات المقبولة.

تستخدم أطر كثيرة أيضًا الاحتفاظ والتخزين المؤقت والتحديثات الجزئية لتجنب تكرار التخطيط والرسم. يجمع GPUI بين النمطين الفوري والمحتفظ به. نموذج الواجهة والعمل الذي يمكن إعادة استخدامه وزمن رسم الإطار مسائل مختلفة.

تواكب MyGo وiced وGPUI وSlint وegui متطلبات الحركة، مع استخدام منخفض لـ CPU. يستهلك Slint أقل قدر من الذاكرة، بينما يستهلك egui قدرًا مرتفعًا نسبيًا، ويجب توفير عناصر التحرير في GPUI بنفسك. يُستخدم MyGo حاليًا بشكل أساسي في تطبيقات المؤلف، ولم يخضع بعد لاختبار واسع النطاق في بيئات الإنتاج.

كما كانت فواصل الإطارات واستهلاك الموارد لدى Flutter وElectron وCompose غير مرضية في اختبار ضغط الحركة هذا. لا يتجاوز حجم حزمة Tauri مقدار 11 MB، لكن استهلاكها للذاكرة أثناء التشغيل قريب من استهلاك Electron.

04العقبة في التحقق

نرى الآن أن التحقق أهم من الرسم.

أصبحت كتابة الكود أقل كلفة، لكن التأكد من صحته لا يزال يحتاج إلى وقت. في استطلاع مطوري Stack Overflow لعام 2025، واجه 66% حلولًا من الذكاء الاصطناعي كانت “almost right, but not quite”، وقال 45.2% إن تصحيح أخطاء كوده يستغرق وقتًا أطول. وفي استطلاع نشرته Sonar في 01/2026، لم يثق 96% تمامًا بالصحة الوظيفية للكود المولّد، وقال 48% فقط إنهم يفحصونه دائمًا قبل commit. تبيع Sonar أدوات فحص الكود، لذا ينبغي قراءة أرقامها بشيء من التحفظ، لكنها تتسق مع الاستطلاع السابق.

لم يثر إصدارا Slint وegui ضجة كبيرة. ونراهما أهم من التقدم في الرسم. يحتاج الوكيل إلى حقن المدخلات والتقاط صور الشاشة كي يعدّل، وينظر، ثم يعدّل مجددًا. كان التحقق من الواجهة يتطلب شخصًا يجلس أمام الجهاز وينقر العناصر واحدًا واحدًا. والآن بدأت الآلة تتولى هذا العمل.

توجد حاليًا ثلاث طرق. يملك Web متعدد المنصات أكبر رصيد من الأدوات والخبرات. لا يحتاج الرسم الذاتي عبر GPU إلى حمل متصفح، وأصبحت عتبة بنائه أقل من قبل. أما بناء تطبيق أصلي لكل منصة فهو النهج الأقدم. في السابق لم تستطع تحمل كلفة عدة فرق إلا الشركات الكبرى. وتتمثل الصعوبة الآن في تضاعف عدد الأخطاء ونطاق الدعم ثلاث مرات كما وصف Breunig. إذا انخفضت كلفة التحقق وارتفعت الجودة، فقد ينجح أيضًا توليد تطبيق أصلي لكل منصة مباشرة.

نجرّب نحن أيضًا GPU UI خاصًا بنا. والفارق هو نقل جزء كبير من DX في تطوير Web: مكونات شبيهة بـ JSX، وأنماط شبيهة بـ CSS، وتخطيط flexbox، وحالة تفاعلية، وDevTools تشبه أدوات المتصفح، ثم الترجمة إلى كود أصلي. ما زال المشروع في بدايته.

لا نعرف أي إجابة ستفوز، وقد تتعايش عدة إجابات طويلًا. لم تتغير الوقائع الثلاث في البداية حتى اليوم. ما زال PR مغلقًا، وMyGo ينمو، وتطبيق Claude المكتبي لا يزال يستخدم Electron. إنه وقت مثير للاهتمام.

05تقرير التجربة

أُجريت الاختبارات من 4 إلى 6 نوفمبر 2026. نُفّذت السيناريوهات نفسها في كل إطار عمل باستخدام الأساليب الموصى بها والإعدادات الافتراضية وبُنى الإصدار. بعد تصحيح التمويه في Compose، أعدنا قياس صفحة التصميم ومشهد الخمول الذي يستخدم التنفيذ نفسه.

الجدول 3بيئتا الاختبار. يختلف الجهازان في العتاد والنوافذ ومقاييس الذاكرة، لذا نقارن داخل المنصة الواحدة فقط، لا القيم المطلقة بين المنصات.
البندMacWindows
الجهازApple M4 Max، عدد الأنوية 16، وذاكرة 64 GBThinkPad T14 Gen6، مع Core Ultra 7 255H، ورسومات مدمجة Arc 140T، وذاكرة 32 GB
النظامmacOS 26.4Windows 11 Pro 10.0.26300
الشاشةStudio Display,60Hz,2x2880×1800,120Hz,200%
النافذة1440×900 بكسل منطقي1280×720 بكسل منطقي؛ صفحة التصميم 1440×900 بلا إطار
مقياس الذاكرةphys_footprintprivate commit (ذاكرة خاصة ملتزم بها، لا الاستهلاك الفعلي للذاكرة المادية)
مقياس الإطاراتاستدعاءات التطبيق الراجعة؛ تختلف دلالتها بين الأطر ولا تُستخدم للمقارنةفاصل العرض في PresentMon 2.6.0، بقياس خارجي
حالة الجهازليس خاملًا؛ مهام تطوير أخرى أثناء الاختبارلا إجراءات أخرى من المستخدم
الجدول 4الأطر والإصدارات المختبرة. مسارات الرسم مأخوذة من سجلات التشغيل أو القيم الفعلية التي أعادتها API. تعني «غير متحقق منه» أننا لم نحصل على دليل أثناء التشغيل في هذا الاختبار.
الإطارالإصدارمسار رسم Macمسار رسم Windows
SwiftUI / WPFmacOS 26.4 SDK / .NET Framework 4.8.1تركيب النظاممسار D3D9 الافتراضي في WPF
Electron45.2.2غير متحقق منهChromium,ANGLE D3D11
Tauri2.12.5WKWebViewWebView2 156,ANGLE D3D11
GPUIZed c4273271Metal، إعدادات افتراضيةغير متحقق منه
MyGo86ec3b30غير متحقق منهغير متحقق منه
eguieframe 0.37.0MetalVulkan
iced0.14.0MetalVulkan
Slint1.18.1FemtoVG,OpenGLFemtoVG,OpenGL ES
Flutter3.47.9Impeller,MetalImpeller,ANGLE D3D11
Compose1.12.2Skiko,MetalSkiko,D3D12
الجدول 5سيناريوهات الاختبار. تقودها مؤقتات داخل التطبيق دون تشغيل يدوي. تُولّد بيانات الاختبار ببذرة ثابتة.
السيناريوعبء العمل
ثباتعرض صفحة التصميم وتركها ثابتة لقياس كلفة الخمول
قائمةقائمة افتراضية من 10,000 سطر، ارتفاع السطر 64، وتمرير ثابت بسرعة 2,000 px/s
بثتحميل 200 رسالة سابقة، ثم إضافة 40 كلمة في الثانية إلى الأخيرة، مع البقاء في الأسفل
تحريرمستند من 5,000 سطر، وإدخال 10 محارف في الثانية عند المؤشر
الحركة500 بطاقة بأبعاد 96×64، ونصف قطر زوايا 12، وتدرج وظل، تتحرك دائريًا وفق صيغة موحدة
صفحة التصميم11 مواصفة تصميم: الخطوط، الظلال، الخطوط الرفيعة، التدرجات، P3، تمويه الخلفية، الزوايا المستديرة، emoji، OpenType، وتنضيد الصينية والإنجليزية معًا

شغّلنا كل سيناريو 5 مرات لكل إطار، مدة كل مرة 30 ثانية، بالتتابع وبترتيب مختلط. جميع القيم أدناه وسيطة. بلغ وسيط المدى بين الجولات الـ5 نحو 3%، وكانت تسعة أعشارها ضمن 24%. أعدنا قياس القائمة والحركة بعد توحيد المواصفات، لذا لم تُجمع الأعمدة في الفترة نفسها. نواة منطقية واحدة تعادل 100% من CPU. تشمل التطبيقات متعددة العمليات جميع العمليات التابعة. ولـ Tauri على Mac احتسبنا أيضًا عمليات WebKit التي أطلقها النظام له. في بيانات إطارات Windows، استخدمنا فقط الجولات المنسوبة بشكل فريد إلى swapchain واحد، دون فقد سجلات.

راجعنا الحجم المنجز فعليًا في البث والتحرير: أكمل Flutter على Windows نسبة 68% فقط من التحرير، بينما تجاوز الجميع 99%.

الجدول 6CPU في Windows، بوحدة %.
الإطارثباتقائمةبثتحريرالحركة
WPF2.637.272.713.549.3
Electron6.142.830.692.1137.8
Tauri31.658.253.7104.9147.8
GPUI1.510.624.33.621.5
MyGo0.017.910.66.332.8
egui0.315.912.219.648.9
iced0.321.320.23.024.5
Slint0.362.726.999.166.8
Flutter0.631.221.8104.690.6
Compose0.535.934.4106.4101.8
الجدول 7ذاكرة Windows، وفق private commit، بوحدة MiB.
الإطارثباتقائمةبثتحريرالحركة
WPF1571932502062,425
Electron280397392556947
Tauri260313346536913
GPUI135142160138142
MyGo132135133132115
egui379386396460388
iced212224274321215
Slint79877220261
Flutter6363963746674,934
Compose4215445743,3722,422
الجدول 8فاصل العرض في Windows، بوحدة ms. عند 120Hz، تمثل 8.33 المعدل الكامل للإطارات. الجولات هي عدد الجولات ذات بيانات الإطارات الصالحة.
الإطارقائمة p95قائمة p99الجولاتحركة p95حركة p99الجولات
WPF8.68.75684.3719.35
Electron8.88.94108.3115.92
Tauri——091.7100.05
GPUI8.68.8516.725.15
MyGo8.48.758.616.75
egui8.88.958.58.75
iced8.98.958.58.65
Slint8.58.858.58.75
Flutter8.48.6580.588.65
Compose8.88.95160.3211.85
الجدول 9CPU في Mac، بوحدة %. الجهاز ليس خاملًا.
الإطارثباتقائمةبثتحريرالحركة
SwiftUI1.016.987.58.999.1
Electron2.516.716.162.0102.2
Tauri6.332.042.186.978.7
GPUI0.49.722.52.917.0
MyGo0.113.28.22.816.3
egui0.19.08.67.220.4
iced0.124.218.27.515.0
Slint0.113.118.452.126.7
Flutter0.211.018.3101.9237.4
Compose0.423.331.3105.1107.5
الجدول 10ذاكرة Mac، وفق phys_footprint، بوحدة MiB.
الإطارثباتقائمةبثتحريرالحركة
SwiftUI324013629337
Electron205536567707698
Tauri101753601570555
GPUI74341358320335
MyGo75368361356371
egui414803817862839
iced75489541598491
Slint151423386434416
Flutter156468455663994
Compose3507107091,4261,295
الجدول 11البدء هو الزمن من إطلاق العملية إلى أول استدعاء راجع لإطار (ms)، لا ظهور الشاشة الأولى مع ذاكرة تخزين مؤقت باردة. الحجم هو مجلد التوزيع (MB)، دون WebView الخاص بالنظام و.NET.
الإطاربدء Macبدء Windowsحجم Macحجم Windows
أصلي (SwiftUI / WPF)2284493.0<0.1
Electron295818267.0376.4
Tauri56562212.511.2
GPUI25527711.913.4
MyGo74212613.111.5
egui30927717.417.4
iced25759014.414.2
Slint26127218.517.0
Flutter2441,04343.930.0
Compose5501,074123.1113.8

مطابقة التصميم

يتطلب اختبار التمويه تنعيم الانتقالات بين الأشرطة الملونة في لوحة محددة داخل النافذة. عند تطبيق Modifier.blur بقيمة 24 dp على طبقة الأشرطة في Compose 1.12.2، ظهرت انتقالات ناعمة في لقطات النوافذ الأصلية على Mac وWindows. ويُموّه SwiftUI بدوره طبقة الأشرطة المعروفة قبل تغطيتها بطبقة بيضاء شبه شفافة. اقتصر التحقق في الطريقتين على هذه الطبقة. واجهة Compose Desktop

مقارنة لوحات الأشرطة في عشرة أطر عمل. تظهر انتقالات ناعمة في Compose وSwiftUI وElectron وTauri وMyGo وFlutter، وتظل حواف الأشرطة حادة في الأطر الأربعة الأخرى.
الشكل 2لقطات لنوافذ Mac الأصلية بمقياس 2×، قُصّت لإظهار لوحة الأشرطة نفسها ثم صُغّرت مع الحفاظ على النسبة.

أضافت تطبيقات الاختبار في GPUI وiced وegui وSlint طبقة شبه شفافة فوق الأشرطة. وظلت حدود الألوان حادة عند إعادة الاختبار. يؤثر Blurred في GPUI وwindow::Settings::blur في iced على المحتوى خلف النافذة. لم نجد في واجهات الرسم المضمّنة في الإصدارات المختبرة تمويهًا موضعيًا للخلفية. يتيح iced رسم تأثيرات موضعية بعارض مخصّص، ويمكن لـ egui استدعاء محرك العرض عبر PaintCallback. GPUI · إعدادات نافذة iced · رد نداء الرسم في egui

اختبرنا Slint بالإصدار 1.18.1 مع FemtoVG. لم يوفّر ذلك الإصدار خاصية backdrop-blur للعناصر. أضافها المشروع لاحقًا لعارض Skia. وتعرض اللقطات مسار FemtoVG في الإصدار 1.18.1. سجل Slint

تضم صفحة التصميم 11 فحصًا. لم يُعِد GPUI وegui وiced وSlint وCompose إنتاج عينة P3 في خرج Mac المختبر. لا تحتوي لقطات Windows على ملف ألوان، لذا لا نحكم على P3؛ وتظهر رموز الأعلام حروفًا.

الجدول 12الخيارات التقنية للوحدات الأساسية، استنادًا إلى الشيفرة المصدرية والوثائق الرسمية للإصدارات المثبتة.
الإطارالتخطيطالنصإمكانية الوصول
GPUITaffyCoreText على macOSAccessKit
eguiتخطيط بالنمط الفوريepaint + harfrustAccessKit
icedتخطيط flex خاصcosmic-textلم نجد جسرًا للنظام
SlintLowering وقت الترجمة + تخطيط وقت التشغيلParleyAccessKit
Flutterقيود RenderBoxSkParagraphجسر شجرة Semantics
ComposeMeasurePolicySkParagraph من SkikoSemantics؛ يتطلب Windows وجود Java Access Bridge
ElectronBlinkمسار نصوص Chromiumشجرة إمكانية الوصول في Chromium
TauriWebView النظامWebView النظاممتاح عبر WebView
SwiftUIStack / LayoutTextKit,Core Textمدمج في النظام

تتقارب أساليب التخطيط، ويبقى النص أكبر موضع اختلاف. عندما طلب iced استخدام PingFang 700 على macOS، استُخدم Menlo Bold بديلًا للحروف اللاتينية.

القيود:

  • جهاز واحد فقط لكل منصة. نتائج الحركة مأخوذة من GPU مدمج من Intel، وقد لا تنطبق على وحدات GPU المنفصلة.
  • لم يكن Mac خاملًا أثناء الاختبار. بيانات الإطارات من استدعاءات التطبيق الراجعة فقط، ولا نستخدمها للمقارنة بين الأطر.
  • تختلف دلالة blur في الظلال. تستخدم egui وiced وGPUI تنفيذات تقريبية. وعناصر التحرير ليست متكافئة أيضًا؛ يستخدم GPUI محررًا من الأمثلة بعد تعديله.
  • تشمل جداول CPU والذاكرة التطبيق والعمليات المساعدة المدرجة فقط. لم توزع تكاليف WindowServer وبرنامج التشغيل حسب النافذة، ولم تُقَس فوائد إعادة استخدام موارد النظام المشتركة؛ لذلك لا ترتب هذه الجداول التكلفة الكلية للتصيير على مستوى النظام.
  • لم نحصل على نتائج صالحة لنوافذ مرشحات طريقة الإدخال أو شجرة إمكانية الوصول على Mac أو استهلاك الطاقة.
ه

هيئة تحرير ui.surf

هيئة تحرير ui.surf · مقالة واحدة