Language-tools: يؤدي تمكين ميزة الرموز الدلالية في الملفات الكبيرة إلى بطء خادم اللغة بشكل غير معتاد

تم إنشاؤها على ١٨ يناير ٢٠٢١  ·  4تعليقات  ·  مصدر: sveltejs/language-tools

صف الخلل

قدم البرنامج المساعد VS Code Svelte v104.0.0 دعمًا للرموز الدلالية. بشكل افتراضي ، يتم تمكين هذا:

// The default
"svelte.plugin.typescript.semanticTokens.enable": true

... ومع ذلك ، يؤدي هذا إلى تباطؤ كبير في ملفات .svelte حيث يتكون عنصر <script lang="ts"> من كمية كبيرة من TypeScript (في حالتي ، 2600 سطر). يصبح خادم اللغة غير مستجيب بشكل فعال ، حيث يستغرق فحص النوع دقيقة واحدة وتتجمد تلميحات الأدوات عند "جارٍ التحميل ..." إلى أجل غير مسمى.

لإعادة إنتاج

مع تثبيت VS Code Svelte plugin v104.0.0 ، وتطبيق الخيار الافتراضي "svelte.plugin.typescript.semanticTokens.enable": true ، قم بإنشاء ملف .svelte به ، على سبيل المثال ، 2600 سطر من كود TypeScript. تعمد إنشاء خطأ في وقت الترجمة ومشاهدته حيث أن جميع عمليات التحقق من النوع تستغرق وقتًا طويلاً جدًا للرد.

يمكنك تحديث الإعدادات إلى "svelte.plugin.typescript.semanticTokens.enable": false ورؤيتها تستجيب على الفور مرة أخرى. لا حاجة لإعادة تشغيل خادم اللغة ، ولا إعادة تشغيل VS Code لمراقبة التغيير.

سلوك متوقع

يجب أن تظل ملفات .svelte التي تحتوي على نصوص TypeScript النصية متجاوبة بغض النظر عن حجم البرامج النصية ، ولا يلزم إجراء أي تكوين إضافي من قبل المطور للحفاظ على الأداء القابل للاستخدام.

النظام (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: macOS 10.15.7
  • IDE: VS Code 1.52.1
  • المكون الإضافي / الحزمة: "Svelte for VSCode"

سياق إضافي

كما تمت مناقشته مع dummdidumm على Svelte #language-tools . لعناية @ jasonlyu123.

من dummdidumm @ على

dummdidumm: نعم ، يمكن أن تكون الرموز الدلالية بطيئة في الملفات الكبيرة ، خاصة وأننا نحتاج إلى إجراء العديد من تعيينات خرائط المصادر
dummdidumm: @ jasonlyu09 ربما يتعين علينا إضافة بعض الحدود للملفات / النطاقات الكبيرة ، بشكل أساسي عدم تقديم الطلب إذا أصبح النطاق المطلوب للتحليل كبيرًا جدًا. أعتقد أن VS Code تفعل شيئًا مشابهًا.

Fixed bug

ال 4 كومينتر

نعم ، لقد حددت امتداد VSCode المطبوع عليه بـ 100000. لكنني وجدت أنه لا يزال بطيئًا للغاية بالنسبة لنا ، ربما بسبب تعيين المصدر ، أعتقد أنني سأصل إلى 50000 ؛

نعم ، لقد حددت امتداد VSCode المطبوع عليه بـ 100000. لكنني وجدت أنه لا يزال بطيئًا للغاية بالنسبة لنا ، ربما بسبب تعيين المصدر ، أعتقد أنني سأصل إلى 50000 ؛

@ jasonlyu123 100000 من ماذا؟ يحتوي ملف السطر البالغ 2600 حرفًا على 128292 حرفًا ، لذلك إذا كان من المفترض تعطيل الرموز الدلالية للملفات التي تحتوي على أكثر من 100000 حرف ، فلا يبدو أنها تفعل ذلك على الإطلاق.

على الرغم من أنه إذا كان الأمر يتعلق بطول بعض الملفات التي تم إنشاؤها (يشير PR الخاص بك إلى TSX ، فربما يكون كذلك) ، بدلاً من المصدر نفسه ، لا أعرف ما هو طول الملفات التي تم إنشاؤها.

الأحرف ، إذا تجاوز ملف js / ts هذا الحرف ، فلن يعالج امتداد النص المطبوع الرموز المميزة الدلالية للملف الكامل. لقد جربت الرقم الموجود على الامتداد svelte في وضع التصحيح ولا يزال يبدو بطيئًا للغاية.

هناك أنواع متعددة من طلبات الرموز الدلالية التي يمكن لخادم اللغة تنفيذها. نقوم حاليًا بتنفيذ النطاق والملف الكامل مثل امتداد الكتابة المطبوعة. من وجهة نظري ، يبدو أن vscode سيحاول فقط الحصول على النتائج التي تراوحت عندما لا يكون الملف الكامل متاحًا. والنطاق الأول هو السبب الذي يجعلك ترى تغيرًا مفاجئًا في اللون عند التمرير لأسفل في المستند.

إنه الآن متوج. دعونا الآن إذا كانت قابلة للاستخدام مرة أخرى عند تشغيل الرموز الدلالية.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات