Rcutils: حساب حجم الدليل المحدد (بما في ذلك الدليل الفرعي)

تم إنشاؤها على ٢٧ أكتوبر ٢٠٢٠  ·  13تعليقات  ·  مصدر: ros2/rcutils

يدعم rcutils_calculate_directory_size () فقط حساب حجم الدليل بدون تكراري.
لماذا لا يدعم rcutils_calculate_directory_size () العودية؟
هل هناك سبب؟

ال 13 كومينتر

لا أفكر في أي شيء ولكني أعتقد أنه سيكون من الجيد أن يعمل بشكل متكرر.

يُستخدم rcutils_calculate_directory_size حاليًا لحساب البيانات الوصفية لـ rosbag2 . نظرًا لأن جميع الملفات الموجودة في الدليل ، فليس من الضروري أن تكون متكررة في الوقت الحالي.

يتم استخدام rcutils_calculate_directory_size حاليًا لحساب البيانات الوصفية لـ rosbag2. نظرًا لأن جميع الملفات الموجودة في الدليل ، فليس من الضروري أن تكون متكررة في الوقت الحالي.

نعم. الآن فقط metadata_io.cpp في rosbag2 يستدعي هذه الوظيفة.

يصف صراحةً أنه لا يدعم البحث العودي. هل نحتاجها أن تكون متكررة مع حالات الاستخدام الفعلية؟

يصف صراحةً أنه لا يدعم البحث العودي. هل نحتاجها أن تكون متكررة مع حالات الاستخدام الفعلية؟

نعم. التنفيذ الحالي في rosbag2 على النحو التالي

https://github.com/ros2/rosbag2/blob/700817c42f1bbc26ced79aca2186094350c8d1be/rosbag2_storage/src/rosbag2_storage/metadata_io.cpp#L229 -L240

يقوم فقط بحساب إجمالي حجم الملف في المسار المحدد. بالنسبة لقاعدة بيانات sqlite3 (الآن يوفر rosbag2 هذا فقط كنهاية خلفية للتخزين) ، فلا بأس لأن قاعدة بيانات sqlite3 هي ملف واحد. لكن بالنسبة للآخرين (مثل leveldb) ، فإنه يستخدم دليلًا لحفظ البيانات. الرموز أعلاه لا يمكن الحصول على الحجم الصحيح لقاعدة البيانات.
أريد تحديث هذه الوظيفة لدعم التكرار.
يجب ألا يؤدي هذا التعديل إلى ظهور مشكلة الرموز الحالية.

أريد تحديث هذه الوظيفة لدعم التكرار.
يجب ألا يؤدي هذا التعديل إلى ظهور مشكلة الرموز الحالية.

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

تضمين التغريدة
CC: @ Barry-Xu-2018

شكرا على التعليق!
في الواقع كنا نحاول استخدام leveldb كقاعدة بيانات rosbag2 الخلفية. سيكون هذا التحسين ضروريًا للقيام بذلك.

تضمين التغريدة

قد نرغب في تقديم معلمة منطقية تعاودية للوظيفة في حالة عدم رغبة المتصل في ذلك حقًا ، ولكن بخلاف ذلك يبدو ذلك جيدًا بالنسبة لي.

في حالة إضافة معامل جديد ، بعد تحديث rcutils ، يجب علينا تحديث rosbag2 في نفس الوقت. خلاف ذلك ، فشل بناء rosbag2.

لقد اختبرت على منصة Linux. لكن يجب اختباره على منصة النافذة.
الآن أقوم بإعداد بيئة النافذة.

في حالة إضافة معامل جديد ، بعد تحديث rcutils ، يجب علينا تحديث rosbag2 في نفس الوقت. خلاف ذلك ، فشل بناء rosbag2.

لا أحب هذا النهج أيضًا. يمكننا الاحتفاظ بالواجهة وتحسين وظائف البحث بشكل متكرر. إذا كانت هناك حالات استخدام محددة للبحث غير التكراري ، فيمكننا إضافة وظيفة جديدة للحالة العودية.

لا أحب هذا النهج أيضًا. يمكننا الاحتفاظ بالواجهة وتحسين وظائف البحث بشكل متكرر. إذا كانت هناك حالات استخدام محددة للبحث غير التكراري ، فيمكننا إضافة وظيفة جديدة للحالة العودية.

بلى. يوافق.

تضمين التغريدة

ماذا عن تحسين rcutils_calculate_directory_size بدون معلمة جديدة؟
حاليًا ، يمكن أن يعمل rosbag2 بشكل صحيح مع rcutils_calculate_directory_size () المحسّن.

ماذا عن تحسين rcutils_calculate_directory_size بدون معلمة جديدة؟
حاليًا ، يمكن أن يعمل rosbag2 بشكل صحيح مع rcutils_calculate_directory_size () المحسّن.

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

إذا كنا لا نريد كسر API ، فيمكننا أيضًا إضافة وظيفة أخرى وهي rcutils_calculate_directory_size_recursive() .

pinging @ Karsten1987 للحصول على نظرة ثاقبة حول ما إذا كان إجراء بحث متكرر دائمًا في rcutils_calculate_directory_size() سيؤدي إلى حدوث مشكلات لـ rosbag2.

تضمين التغريدة

أنا أتفهم مخاوفك.
لقد تحققت من الرموز. فقط أدناه رموز في rosbag2 تستخدم هذه الوظيفة.

https://github.com/ros2/rosbag2/blob/700817c42f1bbc26ced79aca2186094350c8d1be/rosbag2_storage/src/rosbag2_storage/metadata_io.cpp#L229 -L240

بعد تغيير الرموز ، أحاول أيضًا استخدام rosbag2 مع المكون الإضافي الافتراضي للتخزين sqlite3 ولم أجد المشكلة.
بالطبع يجب أن نسمع رأي @ Karsten1987.

@ باري شو 2018

أعتقد أنه يمكنك إغلاق هذا.

تم دمج 306. لذا أغلق هذه القضية.

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