ما باید کد کارآمد انرژی بنویسیم

روزهایی را به یاد میآورم که اینتل تراشههای جدیدی را در سال 2015 سری I7 6000 اینتل منتشر کرد و در واقع معنای خاصی داشت. ما پیشرفت های واقعی در عملکرد داشتیم و شما به مدل جدید نیاز داشتید. انتقال تراشههای 14 نانومتری به 10 نانومتری کار بزرگی بود.
اکنون ما به محدودیتهای فیزیک رسیدهایم، بنابراین اساساً 3 نانومتر از Apple M4 کوچکترین چیزی است که میتوانیم با فضای کمی برای بهبود به دست آوریم.
پیشرفت
همانطور که در نانومتر پایین آمدیم، در واقع فکر کردم که وقتی به حد مجاز رسیدیم، هیچ بهبودی حاصل نمی شود.
اما من اشتباه می کردم. مشکل همیشه سخت افزار نبود. مشکل از نرم افزار بود اولین کسانی که متوجه این موضوع شدند، توسعه دهندگان اپل بودند که معماری پردازنده های خود را تغییر دادند و شاهد پیشرفت عظیمی بودند.
تصور کنید که یک تغییر ساده در نرم افزار، عملکرد یک CPU را تا 10 برابر افزایش می دهد و اساساً هیچ بهبودی در سخت افزار وجود ندارد.
این مقایسه یک تراشه نسبتا قدیمی M1 Max با آخرین مک بوک های I9 است که قبل از چیپ های اپل وجود داشت. همچنین مصرف برق تقریباً به نصف کاهش یافته است، به همین دلیل مک بوک های جدید عمر باتری بسیار بهتری نسبت به مدل های قدیمی اینتل دارند.
بهره وری انرژی در سال 2010
آیا به یاد دارید که خرید آیفون جدید واقعاً معنایی داشت؟ حالا هر مدلی فقط یک به روز رسانی نرم افزاری دریافت می کند و تمام. هیچ پیشرفت سخت افزاری واقعی وجود ندارد.
ایجاد وب سایت در سال 2010 با PHP کم مصرف ترین کار نبود. همانطور که مشخص شد، برای اجرای یک سرور PHP در مقیاس به انرژی زیادی نیاز داشتید.
هم معماری x86 انرژی زیادی مصرف میکرد و هم PHP قدیمی به سختافزار قوی برای مدیریت ترافیک زیادی نیاز داشت.
در مقایسه با سال 2024، ما همچنان کد را روی x86 اجرا می کنیم، اما نرم افزار ما بسیار بهتر شده است و با زبان های بهتری مانند Go یا Rust یا Even Kotlin، انرژی بسیار کمتری مصرف می کند.
نوشتن کد مصرف انرژی
Big O Notation نقشی بزرگتر از آنچه قبلا تصور می شد ایفا می کند. ممکن است فکر کنید که بهعنوان یک توسعهدهنده، اگر کدهای تمیز و سریع بنویسید، تغییری ایجاد نمیکنید، اما من معتقدم که بهعنوان توسعهدهندگان، ما در حال بهبودهای معکوس هستیم، مخصوصاً در قسمت جلو.
هنگام صحبت کردن با Backend، Go شگفتانگیز است، Kotlin سریع و تمیز است، و حتی PHP نیز در حال بهتر شدن است. اما در جلو، بهره وری انرژی چیزی نیست که Vercel واقعاً به آن توجه کند.
با گذشت زمان، باید متوجه شویم که سخت افزار به حدی رسیده است و فضای زیادی برای بهبود در نرم افزار ما وجود دارد.
کارایی > قدرت
مردم در سال 2024 برای بهره وری بیشتر از قدرت اسب ارزش قائل هستند. مردم کامپیوترهای جانوری که 6000 دلار برای آن پرداخت می کنند و 20 پوند وزن دارند نمی خواهند. آنها برنامه های سبک وزنی را می خواهند که روی تراشه های ARM نوشته شده در Go, Rust اجرا شوند. به جای اینکه بخواهیم 1000 وات برای اجرای Adobe Photoshop روی x86 بخواهیم، باید عملکرد کد خود را دو برابر کنیم.
همچنین عمر باتری بسیار مهمتر است. به همین دلیل است که من تغییری در نرم افزار خود در Kotlin برای API و وانیلی وب کامپوننت های خود در قسمت جلو ایجاد کردم.
راه حل
شرکت های بزرگ فناوری از قبل به جای اضافه کردن ترانزیستورهای بیشتر، تمرکز خود را بر روی نرم افزار و معماری آغاز کرده اند.
به عنوان یک فرد، ما باید تمرکز خود را به زبانهای سریعتر و کارآمدتر در پشتیبان معطوف کنیم و کد ظاهری خود را سادهسازی کنیم.
Electron برای دسکتاپ باید دور ریخته شود و React Native برای موبایل باید به راحتی استفاده شود.
به طور کلی، معیارهایی مانند اندازه و مصرف حافظه را برای برنامه های خود نظارت کنید و سعی کنید تا حد امکان آنها را کاهش دهید.
پرداخت 10 هزار دلار در ماه در AWS تنها به این دلیل که می توانیم راه حلی نیست. JetBrains که فقط برای باز کردن IDE به 4 گیگابایت رم نیاز دارد، طبیعی نیست. آنها در واقع باید به Go یا Rust تغییر دهند.
نتیجه
ما میتوانیم توهم سختافزار سریعتر را به سادگی با ایجاد پیشرفتهای قابل توجه در نرمافزارمان ایجاد کنیم. با بهینه سازی کد و تمرکز بر کارایی، می توانیم بدون نیاز به ارتقاء اجزای فیزیکی، عملکرد را افزایش دهیم. این به معنای نوشتن کدهای پاکتر و کارآمدتر، انتخاب زبانهای برنامهنویسی سریعتر و کارآمدتر و سادهسازی فریمورکهای فرانتاند است.
در نهایت، با اولویتبندی بهینهسازی نرمافزار، میتوانیم به دستاوردهای عملکردی دست یابیم که در غیر این صورت تنها با ارتقای سختافزار ممکن به نظر میرسید. این تغییر در تمرکز می تواند به راه حل های پایدارتر و مقرون به صرفه تر در صنعت فناوری منجر شود.
با تشکر از خواندن، و امیدوارم که این مقاله برای شما مفید بوده باشد. اگر سوالی دارید، در صورت تمایل به من ایمیل بزنید kourouklis@pm.me، و من پاسخ خواهم داد.
همچنین می توانید با بررسی X من در اینجا از آخرین به روز رسانی های من مطلع شوید: x.com/sotergreco