PDA

View Full Version : راه حلي براي performance بهتر در زبان #C



parsa.tak
سه شنبه 17 آبان 1390, 14:20 عصر
با سلام
يك سوالي فني
شايد تا بحال شما هم به اين نكته توجه كرده باشيد كه چرا برنامه هاي ديتابيسي سرعت نسبتا پاييني دارند!!

دنبال راه حلي براي اين مسئله هستم!!!
و چطور ميتوان علاوه بر بالا بردن سرعت، حجم اشغالي رو از حافظه به حداقل رساند كه خودش به نوعي باعث تسريع عملكرد برنامه خواهد شد!!!

ممنون

remove-me
سه شنبه 17 آبان 1390, 14:56 عصر
آهان. اولا که خیر، سرعتش اصلا پایین نیست، درسته به اندازه سرعت برگردوندن یک متغیر نیست ولی تو مقادیر تعداد پایین اگر درست استفاده کنی مشکلی پیش نمی یاد.

در کل دو مسئله برای افزایش سرعت هست (اگر بهینه نویسی انجام شده باشه و بهترین راه حل انتخاب شده باشه):
1. Don't Normalization
آقا من اولین بار که رفتم سراغ wordpress دیدم، به به! تعداد نظراتی که واسه هر پست داده می شه رو می زاره تو همون جدول پست. یعنی دیگه نمی یاد inner join کنه تعداد فیلد هارو بشماره. ولی واقعا دیدم کار درست همینه. چرا واسه یک مقدار کوچیک اینقدر به بانک فشار بیاره.

2. No SQL
دیدی یه سرچ تو گوگل می زنی، می زنه 560000 Result پیدا شده.
خوب اولا که فکر نکن رو هوا یه چی پرونده. ذوما توقع نداری که گوگل با اون بانک عظیمی که داره و واقعا نمی شه شمرد بیاد از SQL Server یا Oracle استفاده کنه. و آنجا بود که متولوژی NoSQL آمد. حتما یه سرچ بکن در موردش.

AmirHarirbafan
سه شنبه 17 آبان 1390, 17:03 عصر
برای برنامه هایی با حجم داده ی بالا، از دو تکنولوژی معمولا استفاده میشود
lazy loading یعنی برنامه نیازی ندارد که همه ی داده های جداول در حافظه ی رم لود نمایید و فقط در هنگام نیاز آنها را از بانک (یا هر منبع دیگر) خوانده و در بانک لود نماید. به عنوان مثال اگر کاربر درخواستی داشت که در خروجی آن بیش از حد نیاز کاربر بود، فقط در حد درخواست کاربر لود نماییم
تکنولوژی دوم virtualization میباشد، یعنی به اندازه ای که کابر میتواند مشاهده نماید، برا وی نمایش دهیم، به عنوان مثال، گوگل تنها 10 نتیجه برای شما نمایش میدهد، در صورتی که صفحه دوم نتایج را درخواست کنید، بازهم 10 نتیجه مشاهده خواهید کرد
اقلب این دو تکنولوژی با هم استفاده میشوند و معمولا با همدیگر شتباه میشوند. lazy loading در لایه ی کار با داده استفاده میشود، و virtualization در لایه نمایش (یا presenter بسته به نوع معماری)
روش های پیاده سازی این تکنولوژی ها هم متفاوته، میتونید یه سرچ بزنید و روش مناسب رو با توجه به نیازتون انتخاب کنید.