דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. מהירות הרצת קוד ב-JS [כרום], או "למה המהירות לא קבועה?"

מהירות הרצת קוד ב-JS [כרום], או "למה המהירות לא קבועה?"

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 4 כותבים 288 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב ב נערך לאחרונה על ידי צדיק תמים
    #1

    הלולאה הפשוטה הבאה:

    for (let i = 0; i < 500; i++) {
      console.log(Date.now())
    }
    

    מדפיסה בעצם שוב ושוב, 500 פעמים, בקצב המקסימלי שהמנוע שמריץ (במקרה הזה - V8 - כרום) מסוגל, את מספר אלפיות השניה שחלפו מאז 1 בינואר 1970 00:00:00 UTC.
    ואכן כשאני מריץ את זה בקונסול, אני רואה שבכל אלפית שניה המנוע מספיק להריץ את זה כמה פעמים.
    מה שמוזר זה, שאין במספר הפעמים שום עקביות (חוץ מזה שבאלפית הראשונה הוא מריץ תמיד הכי קצת פעמים)...
    30574731-5397-40e8-80ae-b9f8e62dd714-image.png
    3fc258e6-5f1f-4c4e-95ae-1c50eb53d08b-image.png
    וזה לא רק בהרצה ידנית, אלא גם בהרצה בלופ של הלופ:

    for (let index = 0; index < 4; index++) {
        for (let i = 0; i < 500; i++) {
            console.log(Date.now())
        }
    }
    

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

    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
    טיפים

    גמליאלג dovidD 2 תגובות תגובה אחרונה
    0
    • גמליאלג מנותק
      גמליאלג מנותק
      גמליאל
      השיב לצדיק תמים ב נערך לאחרונה על ידי
      #2

      @צדיק-תמים אמר במהירות הרצת קוד ב-JS [כרום], או "למה המהירות לא קבועה?":

      (חוץ מזה שבאלפית הראשונה הוא מריץ תמיד הכי קצת פעמים)...

      דוקא זה מובן... כי לסוף השניה הנוכחית נשאר תמיד פחות משניה

      צדיק תמיםצ תגובה 1 תגובה אחרונה
      3
      • צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        השיב לגמליאל ב נערך לאחרונה על ידי צדיק תמים
        #3

        @גמליאל אמר במהירות הרצת קוד ב-JS [כרום], או "למה המהירות לא קבועה?":

        כי לסוף השניה הנוכחית נשאר תמיד פחות משניה

        יותר מדוייק: לסוף האלפית שניה הנוכחית נשאר פחות מאלפית...

        Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
        טיפים

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לצדיק תמים ב נערך לאחרונה על ידי
          #4

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

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          צדיק תמיםצ תגובה 1 תגובה אחרונה
          11
          • צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            השיב לdovid ב נערך לאחרונה על ידי
            #5

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

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            dovidD 2 תגובות תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לצדיק תמים ב נערך לאחרונה על ידי
              #6

              @צדיק-תמים יש דרך פשוטה: להשוות הרבה פעמים שני דרכים.
              למשל אתה חושב לעשות A או B, אתה מריץ 100 פעם את שניהם, ואתה יודע שהממוצע הנמוך זה דרך טובה יותר. אם הממוצעים לא כ"כ שונים, אז מגדילים את כמות הבדיקות.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              6
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לצדיק תמים ב נערך לאחרונה על ידי
                #7

                @צדיק-תמים ראה פה דרכים למדידה
                https://michaelscodingspot.com/measure-execution-time-in-javascript/

                יש המון אתרים אונליין להשוואת קוד JS, חפש בגוגל
                js online test benchmark

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                צדיק תמיםצ תגובה 1 תגובה אחרונה
                8
                • צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  השיב לdovid ב נערך לאחרונה על ידי צדיק תמים
                  #8

                  @dovid האתרים האלה לא ממש אמינים... השוותי את הקוד מול עצמו (כלומר הכנסתי בשני המקרים את אותו קוד), ויצא פער... 😁
                  549c5e76-2035-48ab-86c3-b4d6d0d18b0e-image.png
                  התמונה מ https://jsbench.me, וכנ"ל גם ב https://jsben.ch

                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                  טיפים

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לצדיק תמים ב נערך לאחרונה על ידי
                    #9

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

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    2
                    • D מנותק
                      D מנותק
                      davidnead
                      כתב ב נערך לאחרונה על ידי
                      #10

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

                      תגובה 1 תגובה אחרונה
                      4
                      • dovidD dovid התייחס לנושא זה ב

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום