ما هو التأثير (إن وجد) الذي يحدثه تحول Delphi 2009 إلى Unicode(/UTF16) على الحجم القابل للتنفيذ ومساحة الذاكرة؟

StackOverflow https://stackoverflow.com/questions/82454

  •  01-07-2019
  •  | 
  •  

سؤال

إليك واحدة من قسم "لا يوجد سؤال غبي جدًا":

طيب كما يقول الموضوع:هل هناك تأثير؟إذا كان الأمر كذلك، كم؟هل ستشغل جميع القيم الحرفية للسلسلة الموجودة في الكود الخاص بي وفي موارد سوق دبي المالي الخاصة بي ضعف المساحة داخل الثنائيات المترجمة؟ماذا عن استخدام ذاكرة وقت التشغيل للتطبيقات المترجمة؟هل ستستهلك جميع متغيرات السلسلة الآن ضعف ذاكرة الوصول العشوائي (RAM)؟هل يجب أن أزعج نفسي؟

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

هل كانت مفيدة؟

المحلول

يستخدم D2009 UTF-16 لنوع السلسلة الافتراضية، على الرغم من أنه يمكنك إنشاء متغيرات UTF-8 إذا كنت بحاجة إلى ذلك.

جان جويفيرتس يناقش مقايضة الحجم/السرعة في مشاركة مدونة جيدة.

كانت القيم الحرفية للسلسلة في سوق دبي المالي هي UTF-8 منذ D7 على الأقل.وبالتالي، لن تكون هناك زيادة في الحجم بسبب السلاسل الموجودة في سوق دبي المالي مع D2009.

نصائح أخرى

لقد حصلت الآن أخيرًا على دلفي 2009 وبعد إجراء التعديلات اللازمة، أصبح مشروعي الآن يعمل بشكل جيد.:)

للحصول على نتائج سريعة، اضطررت في البداية إلى التعليق على وحدة واحدة أكثر تعقيدًا قليلاً من التطبيق، لذا لا يمكن مقارنتها بنسبة 100% حتى الآن، ولكنها تبدو آمنة بما يكفي للتنبؤ بذلك على الرغم من وجود قدر كبير من القيم الحرفية للسلسلة في كود المصدر الخاص بنا (رسائل سجل التصحيح الزائدة ) من المحتمل أن يكون حجم الملف الثنائي الذي تم تجميعه باستخدام دلفي 2009 هو نفسه تقريبًا كما كان من قبل - إن لم يكن أقل في الواقع!

أتساءل، هل يقوم مترجم دلفي بالفعل بأي نوع من الضغط على الثنائيات أو على الأقل أقسام الموارد الخاصة بها بأي شكل من الأشكال؟كنت أتوقع حقًا أن يكون للتغيير في سلسلة UTF-16 تأثير أكبر في هذا التطبيق بالذات.هل يتم تخزين القيم الحرفية بالفعل كـ UTF-16 (غير مضغوط) داخل الملف الثنائي؟

لم يتح لي الوقت لدراسة الاختلافات في بصمة الذاكرة حتى الآن.

يحرر: ليس مرتبطًا بشكل مباشر بـ Unicode ولكنه مرتبط بالتأكيد:نشر أندرياس هاوسلادن مؤخرًا شيئًا مثيرًا للاهتمام حول التأثير (الهام) لـ {$STRINGCHECKS} خيار المترجم (راجع للشغل:قيد التشغيل افتراضيًا) على الحجم القابل للتنفيذ المترجم: http://andy.jgknet.de/blog/?p=487

لقد كنت أنتظر Unicode VCL لسنوات عديدة، وأخيراً رأيناه.لا أعتقد أن معظم التطبيقات بحاجة إلى القلق بشأن مشكلات الحجم لأنها لا تحتوي على العديد من السلاسل الحرفية على أي حال أو تخزن كميات هائلة من البيانات في الذاكرة.

يتم ترجيح مشكلات سهولة الاستخدام بشكل أكبر لتبرير استخدام Unicode قدر الإمكان.

إذا أراد بعض المطورين إنشاء ملفات exes صغيرة، فيمكنهم تحسينها يدويًا باستخدام AnsiString (إذا لم يكن i18n يمثل مشكلة).

لم أستخدم دلفي منذ سنوات، ولكن ربما يعتمد ذلك على ترميز Unicode الذي يستخدمونه.سيكون UTF8 هو نفسه تمامًا بالنسبة لمجموعة أحرف ASCII العادية (يستخدم فقط أكثر من بايت واحد عندما تدخل في الأحرف الغريبة).قد يكون UTF16 منتفخًا بعض الشيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top