voldemort مدیر انجمن
تاريخ عضويت: 4 شنبه 24 تير 1383 تعداد ارسالها: 392 محل سكونت: تهران
5 شنبه 11 آبان 1385 - 20:00 |
|
|
Ali2 عزیز من سوال دوم شما رو به این شکل جواب می دم که در Managed Code امکاناتی برای برنامه نویسی Unmanaged در نظر گرفته شده. برای مثال می تونید به پستی که در مورد استفاده از اشاره گرها در C# نوشتم یه سری بزنید
افت سرعا فقط به خاطر این مسائل نیست نکته اول اینه که اصلا خود MDX بصورت یه Wrapper روی DX نوشته شده! و این یعنی هزینه بیشتر ولی با وجود سیستمهای جدید این هزینه رو میشه بزودی تقریبا نادیده گرفت.
سر و کله زدن با DirectX یعنی سر و کله زدن با مفاهیم ریاضیات و گرافیک سه بعدی و ... و بنابراین اگر کسی به دایرکت ایکس مسلط باشه فکر نکنم تو یاد گرفتن MDX مشکلی داشته باشه. البته ابن فقط نظر شخصی بنده است.
هیچ وقت بطور قطع نمی تونیم بگیم که MDX پانزده درصد کندتر اجرا میشه. قسمت عمده این کندی بستگی به کد شما داره. یه مثال بزنم:
مثلا فرض کنید برنامه الگوریتم مرتب سازی یه آرایه را بصورت Managed و Unmanaged پیاده سازی کردید. در Managed بیشترین چیزی که باعث اتلاف هزینه در برنامه می شه اینه که در Managed هر بار که به آرایه دسترسی پیدا می کنید index-bounds check انجام می شود و این با وجود اینکه برای برنامه های عادی بسیار مفیده ولی باعث افت سرعت برنامه میشه در حالی که در Unmanaged از این جینگولک بازیها خبری نیست. بنابراین یکی از عوامل اصلی تفاوت سرعت در این برنامه تعداد دفعات دسترسی به آرایه است. البته اجرا در ماشین مجازی .NET خودش باعث کندی برنامه نسبت به حالت معمولی هست.
برای برطرف کردن بعضی از این مشکلات یه سری راه حلها تو کتاب Applied Microsoft .NET Framework Programming پیدا کردم که می تونید مطالعه کنید.
فکر کنم بازم زیاد حرف زدم! |
_________________ First they ignore you;then they laugh at you ;then they fight you ;then you win |
|