יאללה חברים מרים תחרות על התרגיל "פטנט, או ברונו הפיל?!"

מדהים ההפרשים שיש בין מחשב למחשב. את החישוב שלי עשיתי על נייד… (22.5 שניות) ועדיין פער משמעותי…

לייק 1

אני אוכל סרטים איך לוקח לך זמן חישוב של 0.2 שניות
עכשיו הצלחתי להוריד את זמן הריצה שלי ל 3.8 בממוצע
אצלי המעבד i5ו
4GB ram
וכונן 6 gb פנוי :see_no_evil:
ועל פי מה שים הזכיר הקפיצה הטכנולוגית די משמעותית

לייק 1

4 שניות?
יצא לי 0.3990020751953125 seconds

לא הבנתי איך אתם יודעים כמה זמן רץ הקוד? תלמדו אותי גם!

ראי כאן

יצא לי 0.68 :wink:
(התרגיל הזה ממש הוציא לי את המיץ מבחינת חשיבה על מה יותר יעיל. הרג אותי)

2 לייקים

סוד: הדרך הכי טובה לבדוק בצורה הוגנת (ועדיין רחוקה מלהיות מושלמת) מה בערך הוא זמן הריצה של תא, זה לכתוב %%timeit בראש התא.

לי יצא:
114 ms ± 8.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

לייק 1

צריך להוסיף משהו נוסף, כדי לקבל את הפלט שלו?

לחכות קצת. זה יקח לו טיפה יותר זמן כי הוא מנסה לעשות הרבה חזרות כדי לנרמל את התוצאה :slight_smile:

לייק 1

ניסיתי את זה והרצתי כמה פעמים… ובכל הרצה קיבלתי מספר אחר על בדיוק אותו קוד :flushed:

שימי לב ל־standard deviation שהוא נותן.
גם ב־time את תקבלי תוצאה שונה לכל קוד, פשוט פה הוא אומר מה סטיית־התקן :slight_smile:

אוף, הוא טוען שהקוד שלי לא כזה יעיל :face_with_thermometer:
501ms ± 35.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

זה לא אומר שהוא לא יעיל, זה אומר שבהינתן החומרה, בהינתן מה שרץ לי ולך על המחשב כרגע, ובהינתן תצורת הסביבה והמערכות שעליהן אני ואת עובדים, לי לקח 114 מילישניות להריץ קוד (עם סטיית תקן של 8 מילישניות בערך) ולך 501 מילישניות (עם סטיית תקן של 35.5 מילישניות). :slight_smile:
כמו שאמרתי, בשבועות האחרונים לקורס נלמד איך להעריך יעילות של קוד באמת, וזה שונה לחלוטין מאשר מה שעשינו פה.

2 לייקים

לי ייצא — 0.21188020706176758 seconds —
המחשב שלי בן 4 וחצי עוד שניה …

3 לייקים

— 1.893251657485962 seconds —
מחשב ישן

לייק 1

תוצאות מהבדיקה הנוכחית (ללא שינוי של הקוד):
— 0.27300000190734863 seconds —
278 ms ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

148 ms ± 2.37 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

לייק 1

285 ms ± 5.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

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

לייק 1

שהמדידה מראה שלוקח לקוד שלך לרוץ בערך 280 עד 290 מילישניות

משמע יש לאן להתשפר :slight_smile:
אהבתי את הטריק אני אבדוק אותו על דברים שאני עושה :heart: