بصمة ذاكرة البرنامج لمختلف المترجمين الفوريين/المترجمين

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

  •  12-11-2019
  •  | 
  •  

سؤال

وهنا مقتطف من إدخال ويكيبيديا على لغة البرمجة K:

إن الحجم الصغير للمترجم الفوري وبناء الجملة المدمج للغة يجعل من الممكن لتطبيقات K أن تتلاءم تمامًا مع ذاكرة التخزين المؤقت للمستوى الأول للمعالج.

ما الذي يجعل برامج K صغيرة جدًا على وجه الخصوص؟عندما يستخدم المرء ' عامل في ك، map بلغة وظيفية مجمعة مثل هاسكل، أو ما يعادلها for حلقة بلغة حتمية مجمعة مثل C، لا أستطيع أن أتخيل إنشاء أي من المترجمين جذريا كود تجميع مختلف أو أن ما يحدث في الأجزاء الداخلية للمترجم سيكون مختلفًا تمامًا عما يحدث for حلقة.هل هناك أي شيء خاص في K يجعل وقت التشغيل والبرامج الخاصة بها صغيرة جدًا؟

هناك مماثل سؤال على SO، ولكن الإجابات هناك لا توضح شيئًا بشكل أساسي.

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

المحلول

هناك طرق لتوليد رمز مضغوط للغاية.على سبيل المثال، أ http://en.wikipedia.org/wiki/Threaded_code من الرابع وعلى حد سواء.من المحتمل أن يتم تجميع K في شكل ما منه.

نصائح أخرى

أنا لست مؤلف بيان ويكيبيديا أعلاه، فقط شخص يستخدم K على نطاق واسع.

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

تميل برامج K إلى أن تكون صغيرة لأنها عبارة عن رمز بايت صغير وضيق في التخزين، ويميل بناء جملتها إلى إنتاج كميات صغيرة جدًا من التعليمات البرمجية لعملية معينة.

قارن برنامج Java هذا:

int r=0;
for(int i=0; i<100; i++) {
  r+=i;
}

مقابل برنامج K هذا للحصول على نفس النتيجة:

+/!100

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

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

ولكن هذا كله مجرد اتجاهات وأفضل الممارسات داخل اللغة بالاشتراك مع الملف القابل للتنفيذ K نفسه.إذا قمت بربط كميات كبيرة من التعليمات البرمجية الإضافية، والعديد من الوظائف الخاصة، وقمت بترتيب الفهارس بشكل عشوائي قبل الوصول إلى بياناتك، فسيكون برنامجك غير صديق لذاكرة التخزين المؤقت كما تتوقع.

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