بصمة ذاكرة البرنامج لمختلف المترجمين الفوريين/المترجمين
-
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 نفسه.إذا قمت بربط كميات كبيرة من التعليمات البرمجية الإضافية، والعديد من الوظائف الخاصة، وقمت بترتيب الفهارس بشكل عشوائي قبل الوصول إلى بياناتك، فسيكون برنامجك غير صديق لذاكرة التخزين المؤقت كما تتوقع.