כשהלחמה ידנית הופכת לחלק משמעותי מספיק בפרויקט, צריך להתחיל לשים לב ליעילות ולמהירות שלה. כמה זמן באמת נדרש לכל סוג רכיב? האם סדר העבודה משנה? האם יש צווארי בקבוק? ביצעתי מספר מדידות בסיסיות כדי לקבל נתוני אמת שימושיים, והנה התוצאות.
להמשיך לקרוא כמה זמן לוקח להלחים?ארכיון הקטגוריה: אופטימיזציה
איך עשו את זה: סנייק ב-60 בייטים
לפני כמה ימים קיבלתי מייל עם קישור לפנינה קטנה, תרתי משמע: משחק "סנייק" שנכתב באסמבלי (x86), ושגודלו – בינארי, לא כטקסט קריא – שישים בייטים בלבד. בואו ננסה להבין איך זה יכול להיות.
להמשיך לקרוא איך עשו את זה: סנייק ב-60 בייטיםחידות תכנות 3: נתיב במשולש מספרים
שאלה עם פתרון רקורסיבי טריוויאלי, לכאורה, הופכת לפחות-טריוויאלית כשכופים על הפתרון גם מגבלת זמן, ומהווה דוגמה מצוינת לעיקרון של תכנות דינמי.
להמשיך לקרוא חידות תכנות 3: נתיב במשולש מספריםחידות תכנות 2: חלק מהמערך, חצי מהסכום
נתון מערך של מספרים חיוביים, האם ניתן לחלק אותו לשני מערכים בעלי סכום זהה? בואו נפתור ביחד חידה פשוטה לכאורה, שהגיעה (לכאורה) מראיון קבלה למתכנתים בגוגל.
להמשיך לקרוא חידות תכנות 2: חלק מהמערך, חצי מהסכוםסיפורי אופטימיזציה: ניהול באפר במינימום זיכרון
באחד הסרטונים הישנים שלו, מהתקופה שבה הוא קישקש פחות והיה מעניין יותר, דייב ג'ונס אמר משפט חכם לגבי אופטימיזציה של זיכרון במיקרו-בקרים: אנחנו לא בשנות השמונים, אם הגעת למצב שאתה צריך לחשוב על כל בייט, כנראה בחרת במיקרו-בקר לא מתאים. זה נכון, ולכן הפוסט הזה, שעוסק תכל'ס בחיסכון של בייטים בודדים ממש, הוא לא עצה מעשית שמומלץ ליישם אלא פשוט תרגיל מחשבתי, איך לערער קצת על מוסמכות ולא לקחת שום דבר כמובן מאליו.
להמשיך לקרוא סיפורי אופטימיזציה: ניהול באפר במינימום זיכרוןגישה מהירה ל-Struct, בלי כפל
לפני כחודש הראיתי מדוע, כאשר המהירות חשובה, זה לא רעיון טוב להשתמש במערך של struct בקוד שמיועד למיקרו-בקר שאינו מסוגל לבצע פעולת כפל בחומרה (איזה משפט, אה? 🙂 ) בפוסט זה אראה איך לשמר, פחות או יותר, את הנוחות של struct בלי להתפשר על המהירות, גם ברכיבים מוגבלים כאלה – ואת הסכנות שאורבות לנו בדרך. יש גם דוגמת קוד בסוף.
להמשיך לקרוא גישה מהירה ל-Struct, בלי כפלהעלות הסמויה של struct
כשמיקרו-בקר פשוט צריך לחזור על פעולה מסוימת הרבה ומהר, עיכובים יכולים לצוץ מכל מיני מקומות מאוד לא צפויים. הנה סיפור קצר על המחיר הפחות-מוכר של מבנה הנתונים השני הכי פשוט בשפת C.
להמשיך לקרוא העלות הסמויה של structסיפורי אופטימיזציה: Flood Fill חסכוני בזיכרון
בעיית תכנות קלאסית בתחום הגרפיקה, שפתרונה מסתמך בדרך כלל על רקורסיה או מחסנית (Stack), מקבלת טוויסט מעניין כשצריך לממש אותה על מיקרו-בקר עם מגבלות זיכרון חריפות.
להמשיך לקרוא סיפורי אופטימיזציה: Flood Fill חסכוני בזיכרוןחידת מטבעות (ותכנות) למתקדמים
כשלא מצליחים לפתור חידה, אפשר לנסות להתנחם ברעיון שאולי אין לה בכלל פתרון. אבל מה עושים כשמוצאים את הפתרון, ועדיין לא מבינים אותו? קחו נשימה עמוקה, הכינו את האינטואיציה המתמטית ו/או את כישורי התכנות, ונראה אם תצליחו איפה שאני נכשלתי!
להמשיך לקרוא חידת מטבעות (ותכנות) למתקדמיםסיפורי אופטימיזציה: הטבלה לא משקרת
קטעים נבחרים מתוך המאבק העיקש שלי נגד חומרה חלשה ונגד קומפיילר עצלן, במטרה לקצר את זמן התגובה של המערכת שבניתי בפוסט הקודם.