libxml هم با من شوخی میکنه…

15 02 2007

برای اون هایی که نمیدونن libxml چی هست باید بگم که یکی از سطح پایین ترین کتابخونه های ساخته شده برای کار با فایل های xml در لینوکس هستش که پروژه های زیادی مثل گنوم هم از اون استفاده میکنن(یعنی در واقع libxml برای پروژه گنوم ساخته شد).

این برنامه xFDC(اسمش دوباره عوض شد) که نوشتم از پکیج minidom خود پیتون استفاده میکنه و خوب این پکیج سرعت زیادی برای کار با فایل های xml نداره و توی کار با فایل های بزرگ کم میاره. به خاطر همین هم تصمیم گرفتم قسمت مربوط به کار با قایل های xml رو به طور کامل با رابط libxml بنویسم. اولش هیچ آشنایی با این رابط نداشتم, بعد یه کم گردش توی گوگل فهمیدم که پروژه رابط libxml برای پیتون جر پروژه های معروفی هستش که حتی به اندازه چغندر هم به مستندسازی API ها اهمیت نمیدن(حالا خر بیار و باقالی بار کن!).

یعنی این که هیچ جای درست و حسابی برای آشنایی با این رابط توی اینترنت پیدا نمیشه و خودت باید از روی مثال های خیلی کمی که توی وبلاگ ها و وب سایت های مختلف هست سر در بیاری.

خلاصه با هر بدبختی که بود این کار انجام شد و اون قسمت از کدها به طور کامل باز نویسی شد اما….

نتیجه اون چیزی که فکر میکردم در نیومد!…

قبلا بارگذاری فایل مخزن کلمه ی computer-elec تو دستگاه من با پکیج minidom هشت ثانیه طول می کشید. اما حالا همین کار و با همون الگوریتم قبلی با 2Libxml هیجده ثانیه طول کشید!!!!!!

انتظارم این بود که با راهکار جدید سرعت حداقل 4 برابر زیاد تر شه اما حالا میبینید که سرعت 2.5 برابر کم تر شده. نمیدونم شاید الگوریتم کار زیاد درست نیست. اما هر چی که فکر میکنم برای کار به این سادگی الگوریتمی از این بهتر پیدا نمی کنم. خواهشا اگه کسی نظری داره حتما بگه شاید مشکل حل شد….

—————————————–

به روز رسانی:

برنامه xFDC دیگر از ماژول minidom برای پردازش فایل های xml استفاده نمی کنه و در حال حاضر از بسته ی cElementTree برای این کار استفاده میشه که سرعت بسیار بالایی داره و منابع سخت افزاری کمتری هم می خواد.


کارها

اطلاعات

یک پاسخ

17 02 2007
من بچه ملا ۲۵ سال دارم

با expat به نتیجه بهتری آدم میرسه. با توجه به اینکه non-validate ها رو هم ساپورت میکنه کارایی بالایی داره با توجه به اینکه جز lib های استاندارده مناسبتر هم هست. از طرفی توجه داری که libxml تحت لیسانس MIT هست و خودش برای کسی مثل من زیاد دوست داشتنی نیست

دیدگاه‌تان را بنویسید: