چگونه با کمک AI کد فوقالعاده سریع بنویسیم؟
چند روز پیش مقالهای خواندنی از Yoshifumi Kawai درباره نوشتن کدهای سیشارپ High Performance در عصر هوش مصنوعی دیدم که نکات بسیار ارزشمندی داشت.
ایده اصلی مقاله این است که هنگام بهینهسازی کد با BenchmarkDotNet، بررسی زمان اجرا (Mean) و میزان حافظه اشغالشده (Allocated) به تنهایی کافی نیست. اگر اطلاعات دقیقتری مثل خروجی Assembly کدهای JIT یا دادههای مربوط به Branch Prediction را در اختیار مدلهای هوش مصنوعی قرار دهیم، میتواند با تحلیل رفتار کد در سطح سختافزار، بهینهسازیهای غیربدیهی و بسیار عمیقی پیشنهاد دهند.
علاوه بر جنبههای فنی بنچمارک، این مقاله نکات ارزشمندی برای کارهای غیر از Performance هم دارد که نشان میدهد چطور میتوان با هوش مصنوعی بهصورت قابل اعتماد و برای محیطهای واقعی (Production) کار کرد.
نکات کلیدی مقاله:
تغذیه هوش مصنوعی با کدهای اسمبلی: با فعالسازی ابزارهایی مثل DisassemblyDiagnoser و BranchMispredictions، هوش مصنوعی میتواند کدهای اسمبلی تولیدشده توسط JIT را بخواند و گلوگاههای پنهان (مثل Bounds Checks یا حلقههای اضافی) را شناسایی کند.
عبور از مرز خستگی انسان: معمولاً توسعهدهندگان پس از رسیدن به یک بهینهسازی اولیه (مثل یک SIMD ساده) کار را تمامشده میدانند، چرا که بررسی خطبهخط کدهای اسمبلی کاری زمانبر و خستهکننده است. اما برای هوش مصنوعی هزینه بررسی کدهای ماشین صفر است؛ بنابراین میتواند بدون خستگی، چندین مرحله بهینهسازی پیچیده را پشت سر هم ادامه دهد.
حلقههای بهینهسازی تدریجی: در یک بنچمارک برای محاسبه مجموع عناصر یک آرایه، مدل هوش مصنوعی با تحلیل مرحلهبهمرحله دستورات ماشین، توانست یک حلقه ساده for (با زمان ۲۱۱ نانوثانیه) را به یک پیادهسازی فوقالعاده سریع با Vector512 (با زمان ۱۸ نانوثانیه) تبدیل کند.
کاربرد در پروژههای واقعی: نویسنده همین روش را برای بهینهسازی نوشتن اعداد صحیح در کتابخانه معروف MessagePack سیشارپ به کار برده و به بهبودهای چشمگیری رسیده است.
نقش حیاتی توسعهدهنده: هوش مصنوعی جایگزین دانش تخصصی نمیشود. هدایت درست مدلها مستلزم داشتن درک عمیق از زبان C# و رفتار Runtime است؛ علاوه بر این، توسعهدهنده باید کدهای پیشنهادی هوش مصنوعی را خطبهخط بخواند، کاملاً درک کند و صحت عملکرد آنها را بسنجد تا کد نهایی امن، درست و آماده برای Production باشد.
اگر در حوزه .NET، بهینهسازی سطوح پایین یا بهطور کلی مهندسی نرمافزار به کمک هوش مصنوعی فعالیت میکنید، مطالعه این مقاله را حتماً پیشنهاد میکنم!
https://neuecc.medium.com/how-to-write-the-fastest-code-with-benchmarkdotnet-in-c-in-the-ai-era-6a585e634488
@DevTwitter | <Ashkan Nourzadeh/>
Post #12647
7.34K
- 👍 19
- 🍌 7
- ❤ 6