RubyRussia 2019. جوليان بوكروفسكي: كيفية تحسين متراصة

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

صورة

ماذا تفعل في عالم تكنولوجيا المعلومات ، روبي ، اهتماماتك ، خبرتك؟

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

أخبرني ما هو تقريرك؟

سوف أخبرنا عن تجربتنا في تحسين متراصة تبلغ من العمر 8 سنوات وأظهر أنها بسيطة ومفيدة للجميع. وهناك فرصة لتخصيص الوقت لهذا في سباق. يمكنك الحصول على زيادة في الأداء من خلال النظر في عدد قليل من الحيل والأدوات البسيطة التي لا تتطلب Rails وهي مناسبة ليس فقط لتطبيق ويب. سوف أخبركم بالمواد التي كنا نسترشد بها عند حل مشكلاتنا. دعونا نلقي نظرة على stackprof ، rbspy ، heapy ، وأيضًا لماذا يمكن للتغيرات البسيطة في إعدادات نظام التشغيل ، وتغيير المخصص ، أن تحقق فوائد لا تصدق. ولماذا يعد تطبيق نصيحة من الإنترنت أمرًا سيئًا دون إجراء قياسات على طلبك.

هناك أسطورة حضرية مفادها أننا إذا قارنا لغات Big Four (Ruby و Python و JavaScript و PHP) ، ثم في المقام الأول لدينا JS ، لأن هناك في انتظار و jit ، في PHP الثاني ، ثم Python ، و Ruby يأخذ الرابع ماذا تقول ، هل هذا صحيح؟

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

إلى أي مدى يقدم نظام روبي البيئي الآن طرقًا محلية سريعة لحل المشكلات الشائعة؟

يمكنني تفسير السؤال بشكل مختلف. يمكنك التحدث عن كيفية وجود الأشياء في C-extensions في Ruby الآن. إذا قمنا بتضييق السؤال وصولاً إلى هذا ، فعندئذ نعرف جميعًا: OJ for JSON serialization ، PostgreSQL Driver ، Ruby Driver for MySQL والعديد من الأشياء الأخرى مكتوبة في C. السؤال هو إلى أي مدى كان هذا جيدًا أو سيئًا بالنسبة لي شخصيًا. من أجل برامج التحويل البرمجي jit ، والتي قد تكون مستقبل روبي ، لتحسين الكود بشكل جيد ، نحتاج إلى كتابة المزيد في روبي واستخدام حدود أقل. بحيث يمكن للمترجم القيام بذلك. TruffleRuby لديه نهج مختلف لهذا. بقدر ما أتذكر ، فإنه يتيح لك القيام بتحسين بين اللغات المختلفة ، وبالتالي يطلق عليه polyglot vm. مرة أخرى ، ما مدى نجاحه في هذا ، لست مستعدًا للقول. و TruffleRuby نفسه لا يزال مشروع الشباب إلى حد ما.

ما هي أوجه التقدم في عالم روبي هناك للبرمجة غير المتزامنة؟

في رأيي ، لم تحدث أي حركة جماهيرية حديثة تجاه روبي غير المتزامن. هناك بعض المشاريع المنفصلة: كل من EventMachine الذي تم إثباته ومشروع Sam Williams ، أو مجموعة كاملة من المشاريع التي يتم فيها تنفيذ غير متزامن جديد على أساس nio4r ، وهو أبسط من EventMachine أو Celluloid. لكن بشكل عام ، التاريخ ، رغم أنه لم يقف ساكنا ، يمشي في دائرة صغيرة. وحتى الآن لم يذهب شيء أبعد من ذلك. دعونا نرى ما سيحدث بعد ذلك.

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

ماتسوموتو-سان ، مؤلف روبي ، يسافر إلى المؤتمر. ما الذي تعتقد أنه سيكون من المثير للاهتمام بالنسبة لك أن تناقشه معه حول فنجان قهوة أو كوب من القهوة في فترة ما بعد الولادة؟

لقد رأيت بالفعل Matsumoto في موسكو في عام 2016. أتذكر ، ثم قال إنه إذا استمر المؤتمر ليطلق عليه RailsClub فلن يأتي مرة أخرى.

نعم ، وتمت تسميته باسم RubyRussia ، وهذا اسم أوسع. وهو يزورنا مرة أخرى.

ثم فكرت في من سيفوز ، هو أو RailsClub. ماتسوموتو هزم. أود أن أسأل كيف تمكن من طرح السؤال بطريقة قاموا بإعادة تسمية أكبر حدث روبي في روسيا.

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

إن التنبؤ بمصير لغة البرمجة هو مهمة ناكر للجميل ، لأنه حتى الآن لم يخمن أحد كيف ستتطور الأحداث لأي لغة. قد أكون مخطئًا ، لكن روبي ليس الخيار الأكثر شعبية للمشاريع الجديدة في الوقت الحالي. لقد سمع الكثيرون "روبي مات ، لكن القضبان مهملة": إنها بطيئة وغير متزامنة ، إنها غير متوازية ولديها مجموعة كاملة من المشاكل. هل يؤثر هذا على عدد مشروعات روبي الجديدة؟ في رأيي ، بالتأكيد نعم. أنها تصبح أصغر وسوف تصبح أصغر. لكن المشاريع القديمة لا تزال قائمة. في رأيي ، بهذه الطريقة يحتاج روبي إلى أدوات لدعم التطبيقات المعقدة والهائلة. في مثل هذه الحالات ، من الجيد النظر إلى الإضافات مثل نظام الكتابة. يفضل الكثير من الناس دعم التطبيقات الكبيرة وتطويرها ، كما نرى في JavaScript مع Flow و TypeScript ، نحو الكتابة ، مما يجعل إعادة التجهيز ومراقبة الموقف في مشروع معقد أسهل قليلاً. ربما تحتاج إلى إنشاء نظام بيئي أكثر ثراء للمكتبات تحتاج إلى استخدامه بشكل مستقل ، مثل الجاف. حيث يمكن للشخص اختيار ما يحتاج إلى التحقق منه ، ما الذي يمكنه بناء التأثيرات في بعض النظام الفرعي. ربما يحتاج إلى حاويات حقن التبعية التي تحل بعض المشاكل. يجب أن يتحرك النظام البيئي في هذا الاتجاه. في اتجاه تطوير المشاريع ودعم النظم الكبيرة والمعقدة.

مناقشة على RubyRussia!

تعال وأنت ، التسجيل لا يزال مفتوحًا.

لن يكون هناك تقارير فقط ، ولكن أيضًا مواقف لشركات رائعة:

المنظم - إيفرون
الشريك العام - توبتال
الشريك الذهبي - Gett
شركاء الفضة - Valarm ، JetBrains ، Bookmate و Cashwagon
الشريك البرونزي - InSales

Source: https://habr.com/ru/post/ar467461/


All Articles