نکات برنامه نویسی اصولی

سلام
این پست در خصوص تجربیاتیه که در برنامه نویسی داشتیم. مخصوصاً اون تجربیاتی که به خاطرش ساعت‌ها و روزها درگیر بودیم تا بتونیم مشکل برنامه رو حل کنیم (که خیلی وقت‌ها هم این مشکل راه حل خیلی ساده‌ای داشته اما رسیدن به همون راه حل کار راحتی نبوده). اینطوری بقیه هم میتونند از این تجربه‌ها استفاده کنند و بدون صرف اون همه وقت برنامشون رو پیش ببرند.

3 پسندیده

به عنوان اولین مورد تجربه‌ی خودم رو مینویسم که همین 2 روز پیش بهش رسیدم و یه جورایی خیلی اشتباه ساده لوحانه‌ای بود.
توی یه برنامه بافری داشتم که از نوع 32 بیتی بود. من معمولاً برای ریست آرایه از memset استفاده میکنم. معمولاً هم توی برنامه‌ها آرایه‌ی از نوع کاراکتری نیاز میشه که خب هیچ وقت مشکلی نداشتم باهاش. اما توی این برنامه میدیدم که برنامه خیلی رفتار رندومی داره و هر دفعه یه جوری کار میکنه. با دیباگ رسیدم به همین آرایه که مقدار درستی داخلش قرار نمیگرفت در صورتی که تا قبل از اون همه چیز درست بود. بالاخره بعد از صرف زمان زیادی فهمیدم که پارامتر سوم تابع memset که سایز آرایه‌ی ورودیه، در واقع بر حسب بایته و باید از sizeof براش استفاده کنم در حالی که من داشتم طول آرایه رو که به صورت define تعریف کرده بودم پاس میدادم بهش و خب چون آرایه‌ی من 32 بیتی بود در واقع من داشتم فقط یک چهارم اون آرایه رو با memset ریست میکردم.

8 پسندیده

خب استفاده از memset فقط در میکروهای 8 بیتی بهینه و سریعه. توی میکروی 32 بیتی memset برای هر خانه آرایه یه حلقه 4 تایی رو اجرا میکنه. درحالیکه اگه خودتون memset32 بنویسید حلقه اش یکی چهارم memset زمان میبره.

5 پسندیده