שאלה עקרונית (לסגל בעיקר) - מה עדיף: סיבוכיות בכתיבה או בהרצה?

היי :slight_smile:
שאלה עקרונית שאני מניחה שהתשובה אליה משתנה בין מקרים שונים, אבל אשמח לדעת מה ה- best practice הנהוג:
האם עדיף שתהיה חזרתיות יחסית בכתיבה מאשר הרצה פחות יעילה (מבחינת שורות קוד ״מיותרות״ שרצות)

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

(יש לי דוגמה ממשית מאחד התרגילים, לא רוצה להרוס לכולם ולשתף אותו, אשמח לשתף בפרטי עם הסגל)

תודה מראש וחג שמח!

לייק 1

היי אלי,

אמ;לק: תלוי מה הפרש הביצועים ומה את מנסה להשיג.

דונלד קנות’, אחד מהאבות המייסדים של מדעי המחשב, נוהג לומר ש"אופטימיזציות בטרם עת הן שורש כל הרוע" (Premature optimizations are the root of all evil).

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

  1. כמה זמן חסכת בכל הרצה? האם זמן הריצה של הסקריפט ירד מיום לחצי דקה, או שהוא ירד מ־30 שניות ל־29.8 שניות? אם הקוד רץ תדיר? כמה זמן תחסכי בסך הכל בהינתן כמות הריצות הכוללת של הסקריפט שלך?
  2. כמה בלתי קריא הקוד שלך הפך להיות? צריך להבין האם הקושי בתחזוקת הקוד שווה את ההמהרה שתשיגי.
  3. האם הייעול משמעותי מבחינת סדר גודל? סתם לדוגמה, אם הסקריפט שלך ניגש לאינטרנט (פעולה שלוקחת הרבה מאוד זמן, נניח שנייה שלמה) ומה שייעלת זה את התנאי שבודק האם יש את המילה “פייתון” בעמוד (פעולה שלוקחת לא הרבה זמן, נניח ייעלת מ־2 ננושנייה לננושנייה), אז זה כנראה לא מספיק משמעותי כדי להתייחס אליו
  4. מי הלקוחות של הקוד שלך? עד כמה השיפור ביעילות משנה? האם מדובר בסקריפט קצר שכתבת למקום העבודה או לעצמך בבית, או שמדובר בקוד לשרתים של גוגל, או בהרחבה לפייתון שהולכת לשרת מיליוני אנשים?

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

– ים

7 לייקים