مشکل در سرعت برنامه های Qt



  • p{direction:rtl; text-align:right}. سلام بچه ها ...
    من یه برنامه با حجم 3 مگابایت نوشتم و در این برنامه از هیچ عکسی استفاده نکردم ... حالا سرعت بالا اومدنش خیلی کند هست ... !
    فقط این برنامه نیست ... خیلی از برنامه هایی که خودم نوشتم و خیلی از برنامه هایی که (به صورت پروژه ای) کامپایل کردم هم اینمشکل رو داره
    در واقع فقط در کند بودن برنامه نیست ... از حافظه ها خیلی استفاده میکنه ... فقط یک فرم خالیش 10 مگابایت استفاده میکنه ... !
    در اینصورت سرعتش از C# هم کمتره ... !
    مشکل از چیه ؟



  • p{direction:rtl;text-align:right;}. سلام.

    p{direction:rtl;text-align:right;}. مطمئن باش که سرعت Qt خیلی از C# بیشتره . احتمالا مشکل مربوط به کامپیوترت میشه. از چه ورژنی از Qt استفاده کردی؟ mingw یا msvc ؟ برنامت از کدوم ماژولهای Qt  استفاده میکنه؟

    "QtExperts":http://www.qte.ir/?ref=d9229d370d0771752f0a8de9dddcefc2



  • bq. مطمئن باش که سرعت Qt خیلی از C# بیشتره . احتمالا مشکل مربوط به کامپیوترت میشه. از چه ورژنی از Qt استفاده کردی؟ mingw یا msvc ؟ برنامت از کدوم ماژولهای Qt استفاده میکنه؟

    p{direction:rtl; text-align:right}. اینکه از C# بیشتره که میدونم ... بالا اومدنشو میگم ...
    از کیوت 5.0.1 میکنم و برنامم از QtCore و QtGUi اشتفاده میکنه ...



  • [quote author="Mostafa Alizadeh" date="1365592057"] مطمئن باش که سرعت Qt خیلی از C# بیشتره
    [/quote]

    p{direction:rtl;text-align:right;}. این یک اظهار نظر نادرست و نامطمئن هست. سی‌شارپ توی خیلی از بنچمارک‌های من همچنان سریع‌تر از کیوت جواب میده.



  • [quote author="soroush" date="1365615342"]
    p{direction:rtl;text-align:right;}. این یک اظهار نظر نادرست و نامطمئن هست. سی‌شارپ توی خیلی از بنچمارک‌های من همچنان سریع‌تر از کیوت جواب میده. [/quote]

    p{direction:rtl; text-align:right}. خب پس مشکل چیه ؟
    چطور باید برطرف بشه ؟



  • [quote author="Abbas Naghdi" date="1365757981"]

    p{direction:rtl; text-align:right}. خب پس مشکل چیه ؟
    چطور باید برطرف بشه ؟
    [/quote]

    p{direction:rtl; text-align:right}. زمان لینک نسبت به سی‌شارپ حجم بیشتری باید لود بشه. اما نباید این تغییر محسوس باشه. مگر این که یک کامپایل Debug انجام داده باشی. معماری‌ها رو هم چک کن. مثلا استفاده از ۳۲ بیتی روی سیستم ۶۴ بیتی منطقی نیست.



  • p{direction:rtl; text-align:right}. نه از Debug استفاده نکردم و سیستمم 32 بیتی هست ... !



  • p{direction:rtl; text-align:right}. خوب از این‌جا نمیشه حدس زد مشکل چیه! باید خودت پیدا کنی. راه‌حل‌های پیشنهادی من استفاده از یک پروفایلر مطمئن و تحلیل نتایج اجرا در سطح سخت‌افزار هست. برای لینوکس ابزارهایی مثل valgrind و perf و gperf وجود دارن. برای ویندوز "این لینک SO":http://stackoverflow.com/questions/67554/whats-the-best-free-c-profiler-for-windows-if-there-are کمک می‌کنه که پروفایلرهای این سیستم‌عامل رو پیدا کنی.



  • [quote author="soroush" date="1365615342"]
    [quote author="Mostafa Alizadeh" date="1365592057"] مطمئن باش که سرعت Qt خیلی از C# بیشتره
    [/quote]

    p{direction:rtl;text-align:right;}. این یک اظهار نظر نادرست و نامطمئن هست. سی‌شارپ توی خیلی از بنچمارک‌های من همچنان سریع‌تر از کیوت جواب میده. [/quote]

    جناب سروش میشه یه توضیح خلاصه برای کسایی مثل من که تازه با کیوت آشنا شدن بدین در مورد اینکه یه فریم ورکی مثل کیوت که ( نتیو کد ) تولید میکنه چطور بعضی جاها سرعتش از کدهای سی شارپ که ( منیج کده ) پایینتره ؟! آخه من خودم فقط به خاطر همین کندی کدهای دات نت اومدم سراغ یه چیزی مثل کیوت .
    ( یه سوال خارج موضوع اگه حوصله کردین راهنمایی کنین : کلا با سرعت پایین اجرای کدهای دات نت چکار میشه کرد؟؟)



  • p{direction:rtl;text-align:right;}. این بستگی به کاربرد داره. سرعت کیوت پایین نیست ولی خوب این وسط نوع برنامه نویسی و الگوریتم هایی که استفاده میشه مهمه.

    p{direction:rtl;text-align:right;}. بعضی مسائل هم مثل همونی که سروش گفت "کامپایل در حالت debug" سرعت رو کم میکنه چون لابلای کد ها debugging symbols اضافه میشه. بعلاوه نوع کامپایلر، سیستم عامل، درایور ها همگی موثر هستند.

    p{direction:rtl;text-align:right;}. جدا از همه اینها مدیریت استارت آپ (startup) برنامه یک مهارته که میتونه تاثیر زیادی روی سرعت بالا اومدن برنامه داشته باشه. اینکه بدونید چه بارگذاری هایی رو کجا انجام بدین و با استفاده از thread ها پردازش ها رو تقسیم کنید.

    p{direction:rtl;text-align:right;}. حجم برنامه هم موثره. همونطور که میدونید برنامه با همون حجمی که داره عینا منتقل میشه به رم. بنابراین برنامه نویسی بصورت ماژولار رو یاد بگیرید.

    "QtExperts":http://www.qte.ir/?ref=f77c18586e3f95f70b072e1c90d63e8f



  • [quote author="Keyvan Moeini" date="1377130369"][quote author="soroush" date="1365615342"]
    [quote author="Mostafa Alizadeh" date="1365592057"] مطمئن باش که سرعت Qt خیلی از C# بیشتره
    [/quote]

    p{direction:rtl;text-align:right;}. این یک اظهار نظر نادرست و نامطمئن هست. سی‌شارپ توی خیلی از بنچمارک‌های من همچنان سریع‌تر از کیوت جواب میده. [/quote]

    جناب سروش میشه یه توضیح خلاصه برای کسایی مثل من که تازه با کیوت آشنا شدن بدین در مورد اینکه یه فریم ورکی مثل کیوت که ( نتیو کد ) تولید میکنه چطور بعضی جاها سرعتش از کدهای سی شارپ که ( منیج کده ) پایینتره ؟! آخه من خودم فقط به خاطر همین کندی کدهای دات نت اومدم سراغ یه چیزی مثل کیوت .
    ( یه سوال خارج موضوع اگه حوصله کردین راهنمایی کنین : کلا با سرعت پایین اجرای کدهای دات نت چکار میشه کرد؟؟)[/quote]

    p{direction:rtl;text-align:right;}. این کیوت نیست که کد تولید می‌کنه کامپایلره. کامپایلرهایی که کد native تولید می‌کنن اصولا باید سریع‌تر باشن اما این کامپایلرها از بهینه‌سازی‌های زمان اجرا (که توسط CLR انجام میشه) بی‌بهره هستند. این نوع بهینه‌سازی خیلی قوی هست و براساس داده‌های زمان اجرا کار می‌کنه. در حالی که توی روند توسعهٔ نرم‌افزار با زبان کاملا استاتیک مثل سی++ کامپایلر بعد از این که کد رو به کد ماشین ترجمه کرد خداحافظی می‌کنه و دیگه نقشی نداره. حالا با هر ورودی بخوای برنامه رو اجرا کنی (حتا ورودی‌هایی که خیلی ساده میشه اجرا کرد) برنامه فقط یه جور اجرا میشه. ولی CLR میاد چند دستورالعمل بعدی رو با داده‌هایی که قراره fetch بشن پیش‌بینی می‌کنه و در مواردی این کار خیلی به‌دردبخوره. حالا این که پردازش لازم برای خود این کار گند می‌زنه به کل روند اجرا و منابع هدر میده به کنار. برای همین گفتم در بعضی موارد نه همهٔ موارد.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.