ערב טוב לכולם, מכיוון שהתרגיל “פטנט, או ברונו הפיל?!” מבחינת זמן הרצה הוא לא פשוט חשבתי להוסיף לתרגיך טיפה פלפל, ולהרים תחרות של כמות מן ההרצה שייצאה לכם עד התשובה הסופית, לכן תייעלו אותו כמה שרק ניתן ותפרסמו תוצאה
כמובן לשים לב שאת התשובה הסופית תשמרו איתכם
לי ייצא 4:07
Yam
אני אוהב את הרוח המשחקית לעניין, אבל כפארטי־פופר מקצועי כבר פינצ’רתי מסיבה כזו:
(לא בקטע רע, אבל חשוב שגם אנשים עם מחשב יותר חלש לא יתבאסו לנו)
112344asafh
אני עם מחשב נייד מקרטע כאן
האם סגנון הכתיבה הוא לא הגורם העיקרי כאן?
Yam
ממממ, זה חישוב מעטפה ממש קיצוני, אבל להערכתי הפרש בין מחשב שנקנה עכשיו מול מחשב שנקנה לפני 7 שנים, אם נקח את חוק מור ונדלל אותו בחצי בגלל סיבות מקביליות וכו’ (קצב העיבוד מוכפל כל שנתיים ולא כל שנה), יכול לגרום לקוד לרוץ פי 11.3 יותר מהר (2 בחזקת 3.5).
aviadamar
— 0.2683281898498535 seconds —
אבל רק אומר שיש לי נייד שהוא סוג של מפלצת זכרון.
בשביל הפרספקטיבה:
מעצב אינטל i9
32gb ddr4
2t ssd
לייק 1
israel4001
מדהים ההפרשים שיש בין מחשב למחשב. את החישוב שלי עשיתי על נייד… (22.5 שניות) ועדיין פער משמעותי…
לייק 1
112344asafh
אני אוכל סרטים איך לוקח לך זמן חישוב של 0.2 שניות
עכשיו הצלחתי להוריד את זמן הריצה שלי ל 3.8 בממוצע
אצלי המעבד i5ו
4GB ram
וכונן 6 gb פנוי
ועל פי מה שים הזכיר הקפיצה הטכנולוגית די משמעותית
לייק 1
gonny
4 שניות?
יצא לי 0.3990020751953125 seconds
ruty3017
לא הבנתי איך אתם יודעים כמה זמן רץ הקוד? תלמדו אותי גם!
israel4001
ראי כאן
ruty3017
יצא לי 0.68
(התרגיל הזה ממש הוציא לי את המיץ מבחינת חשיבה על מה יותר יעיל. הרג אותי)
2 לייקים
Yam
סוד: הדרך הכי טובה לבדוק בצורה הוגנת (ועדיין רחוקה מלהיות מושלמת) מה בערך הוא זמן הריצה של תא, זה לכתוב %%timeit בראש התא.
לי יצא: 114 ms ± 8.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
לייק 1
israel4001
צריך להוסיף משהו נוסף, כדי לקבל את הפלט שלו?
Yam
לחכות קצת. זה יקח לו טיפה יותר זמן כי הוא מנסה לעשות הרבה חזרות כדי לנרמל את התוצאה
לייק 1
ruty3017
ניסיתי את זה והרצתי כמה פעמים… ובכל הרצה קיבלתי מספר אחר על בדיוק אותו קוד
Yam
שימי לב ל־standard deviation שהוא נותן.
גם ב־time את תקבלי תוצאה שונה לכל קוד, פשוט פה הוא אומר מה סטיית־התקן
ruty3017
אוף, הוא טוען שהקוד שלי לא כזה יעיל
501ms ± 35.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Yam
זה לא אומר שהוא לא יעיל, זה אומר שבהינתן החומרה, בהינתן מה שרץ לי ולך על המחשב כרגע, ובהינתן תצורת הסביבה והמערכות שעליהן אני ואת עובדים, לי לקח 114 מילישניות להריץ קוד (עם סטיית תקן של 8 מילישניות בערך) ולך 501 מילישניות (עם סטיית תקן של 35.5 מילישניות).
כמו שאמרתי, בשבועות האחרונים לקורס נלמד איך להעריך יעילות של קוד באמת, וזה שונה לחלוטין מאשר מה שעשינו פה.
2 לייקים
Litinskys
לי ייצא — 0.21188020706176758 seconds —
המחשב שלי בן 4 וחצי עוד שניה …