مقایسه سرعت Struct و Class - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۱۵۶ نفر آنلاین
۰ عضو و ۱۵۶ مهمان در سایت حاضرند

مقایسه سرعت Struct و Class

+1 امتیاز
186 بازدید
سلام.

سرعت اجرای ساختار بیشتر است یا class و علت تفاوت سرعت بین این دو چیست?

ممنون میشم راهنمایی کنید.
سوال شده شهریور 4, 1394  بوسیله ی امیدوار (امتیاز 928)   3 12 47

2 پاسخ

+1 امتیاز
 
بهترین پاسخ
در #C  فرق اصلی که وجود داره این هستش که زمان ارسال به تابع struct کلا call by value هست بصورت پیش فرض مگر این که از ref استفاده کنید ولی class  این جور نیست و پیش فرض call by refrence

و آره struct داخل Stack ذخیره میشه و class روی هیپ در C#

تفاوت سرعت هم بستگی پیدا می کنه به نحوه استفاده اگر قراره که struct بزرگ باشه و چیزای زیادی ذخیره کنه و زیاد هم به توابع پاس داده بشه چون هر بار کپی میشه کند تر از class هست . وگرنه برای چیزای کوچیک سریع تر هست مثلا برای ذخیره یک position که داخلش x,y هست struct مناسب تره .
پاسخ داده شده شهریور 8, 1394 بوسیله ی BlueBlade (امتیاز 15,742)   13 17 85
خیلی ممنون،
مثلا حجم struct چند بایت باشه خوبه؟ یا هر چی کمتر بهتر؟
کمتر بهتر در حد ۵-۶ تا متغیر اینا . و این که اگر زیاد ازش شی میسازی ولی قرار نیست به توابع زیاد پاس داده بشه struct بهتره
+2 امتیاز
عملاً تفاوت خاصی ندارن کلاس و struct کاملاً شبیه به هم هستند با این تفاوت که اگر scope را در کلاس مشخص نکنیم private فرض میشن.

چیزی که ممکنه تو سرعت اجرایی کلاس های تاثیر گذار باشه فراخوانی سازنده کلاس هستش که اگر struct POD باشه که سازنده نداره و قاعدتاً سریع تر هستش.

البته شما برای کلاس هم قادرید کخ default constructor را حذف کنید.
پاسخ داده شده شهریور 5, 1394 بوسیله ی مصطفی ساتکی (امتیاز 17,035)   17 26 66
تو این لینک https://msdn.microsoft.com/en-us/library/ah19swz4.aspx گفته struct value type هستش پس چطور تو heap قرار میگیره من الان هنگم.
https://msdn.microsoft.com/en-us/library/saxz13w4.aspx
به مثال زیر توجه کنید.
class Foo1{
int value;
};

void test(){
Foo1 a;
}
class testClass{
public:
Foo1 a;
};

 

نمونه a در تابع test در stack قرار میگیره ولی نمونه a در کلاس testClass در heap قرار می گیره.
 
مثال زیر یک struct را در heap میسازه:
struct Foo{
	int a;
};



	auto foo = new Foo;

 

 

سلام آقای ساتکی
من راجب به این سوال تحقیق کردم در سی پلاس پلاس با کلمه کلیدی new ساختار در heap قرار میگیره اما راجب سیشارپ من چیزی متوجه نشدم ؟
...