ארכיון הקטגוריה: אופטימיזציה

כמה זמן לוקח להלחים?

כשהלחמה ידנית הופכת לחלק משמעותי מספיק בפרויקט, צריך להתחיל לשים לב ליעילות ולמהירות שלה. כמה זמן באמת נדרש לכל סוג רכיב? האם סדר העבודה משנה? האם יש צווארי בקבוק? ביצעתי מספר מדידות בסיסיות כדי לקבל נתוני אמת שימושיים, והנה התוצאות.

רכיבים מולחמים ללוח
להמשיך לקרוא כמה זמן לוקח להלחים?

איך עשו את זה: סנייק ב-60 בייטים

לפני כמה ימים קיבלתי מייל עם קישור לפנינה קטנה, תרתי משמע: משחק "סנייק" שנכתב באסמבלי (x86), ושגודלו – בינארי, לא כטקסט קריא – שישים בייטים בלבד. בואו ננסה להבין איך זה יכול להיות.

הסנייק הכי קטן בעולם - צילום מסך
הסנייק הכי קטן בעולם – צילום מסך
להמשיך לקרוא איך עשו את זה: סנייק ב-60 בייטים

חידות תכנות 3: נתיב במשולש מספרים

שאלה עם פתרון רקורסיבי טריוויאלי, לכאורה, הופכת לפחות-טריוויאלית כשכופים על הפתרון גם מגבלת זמן, ומהווה דוגמה מצוינת לעיקרון של תכנות דינמי.

להמשיך לקרוא חידות תכנות 3: נתיב במשולש מספרים

חידות תכנות 2: חלק מהמערך, חצי מהסכום

נתון מערך של מספרים חיוביים, האם ניתן לחלק אותו לשני מערכים בעלי סכום זהה? בואו נפתור ביחד חידה פשוטה לכאורה, שהגיעה (לכאורה) מראיון קבלה למתכנתים בגוגל.

להמשיך לקרוא חידות תכנות 2: חלק מהמערך, חצי מהסכום

סיפורי אופטימיזציה: ניהול באפר במינימום זיכרון

באחד הסרטונים הישנים שלו, מהתקופה שבה הוא קישקש פחות והיה מעניין יותר, דייב ג'ונס אמר משפט חכם לגבי אופטימיזציה של זיכרון במיקרו-בקרים: אנחנו לא בשנות השמונים, אם הגעת למצב שאתה צריך לחשוב על כל בייט, כנראה בחרת במיקרו-בקר לא מתאים. זה נכון, ולכן הפוסט הזה, שעוסק תכל'ס בחיסכון של בייטים בודדים ממש, הוא לא עצה מעשית שמומלץ ליישם אלא פשוט תרגיל מחשבתי, איך לערער קצת על מוסמכות ולא לקחת שום דבר כמובן מאליו.

להמשיך לקרוא סיפורי אופטימיזציה: ניהול באפר במינימום זיכרון

גישה מהירה ל-Struct, בלי כפל

לפני כחודש הראיתי מדוע, כאשר המהירות חשובה, זה לא רעיון טוב להשתמש במערך של struct בקוד שמיועד למיקרו-בקר שאינו מסוגל לבצע פעולת כפל בחומרה (איזה משפט, אה? 🙂 ) בפוסט זה אראה איך לשמר, פחות או יותר, את הנוחות של struct בלי להתפשר על המהירות, גם ברכיבים מוגבלים כאלה – ואת הסכנות שאורבות לנו בדרך. יש גם דוגמת קוד בסוף.

להמשיך לקרוא גישה מהירה ל-Struct, בלי כפל

העלות הסמויה של struct

כשמיקרו-בקר פשוט צריך לחזור על פעולה מסוימת הרבה ומהר, עיכובים יכולים לצוץ מכל מיני מקומות מאוד לא צפויים. הנה סיפור קצר על המחיר הפחות-מוכר של מבנה הנתונים השני הכי פשוט בשפת C.

מימין לאט, משמאל מהר – לפרטים, קיראו למטה
להמשיך לקרוא העלות הסמויה של struct

סיפורי אופטימיזציה: Flood Fill חסכוני בזיכרון

בעיית תכנות קלאסית בתחום הגרפיקה, שפתרונה מסתמך בדרך כלל על רקורסיה או מחסנית (Stack), מקבלת טוויסט מעניין כשצריך לממש אותה על מיקרו-בקר עם מגבלות זיכרון חריפות.

שטח ממולא חלקית
להמשיך לקרוא סיפורי אופטימיזציה: Flood Fill חסכוני בזיכרון

חידת מטבעות (ותכנות) למתקדמים

כשלא מצליחים לפתור חידה, אפשר לנסות להתנחם ברעיון שאולי אין לה בכלל פתרון. אבל מה עושים כשמוצאים את הפתרון, ועדיין לא מבינים אותו? קחו נשימה עמוקה, הכינו את האינטואיציה המתמטית ו/או את כישורי התכנות, ונראה אם תצליחו איפה שאני נכשלתי!

להמשיך לקרוא חידת מטבעות (ותכנות) למתקדמים