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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 4 כותבים 308 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב ב נערך לאחרונה על ידי צדיק תמים
    #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
    • צדיק תמיםצ צדיק תמים

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

      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())
          }
      }
      

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

      גמליאלג מנותק
      גמליאלג מנותק
      גמליאל
      כתב ב נערך לאחרונה על ידי
      #2

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

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

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

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

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

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

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

        צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        כתב ב נערך לאחרונה על ידי צדיק תמים
        #3

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

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

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

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

        תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ צדיק תמים

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

          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())
              }
          }
          

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

          dovidD מנותק
          dovidD מנותק
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי
          #4

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

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          צדיק תמיםצ תגובה 1 תגובה אחרונה
          11
          • dovidD dovid

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

            צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            כתב ב נערך לאחרונה על ידי
            #5

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

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

            dovidD 2 תגובות תגובה אחרונה
            0
            • צדיק תמיםצ צדיק תמים

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

              dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי
              #6

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

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              6
              • צדיק תמיםצ צדיק תמים

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

                dovidD מנותק
                dovidD מנותק
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #7

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

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

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                צדיק תמיםצ תגובה 1 תגובה אחרונה
                8
                • dovidD dovid

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

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

                  צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  כתב ב נערך לאחרונה על ידי צדיק תמים
                  #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
                  • צדיק תמיםצ צדיק תמים

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

                    dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #9

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

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    תגובה 1 תגובה אחרונה
                    2
                    • D מנותק
                      D מנותק
                      davidnead
                      כתב ב נערך לאחרונה על ידי
                      #10

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

                      תגובה 1 תגובה אחרונה
                      4
                      • dovidD dovid התייחס לנושא זה ב
                      תגובה
                      • תגובה כנושא
                      התחברו כדי לפרסם תגובה
                      • מהישן לחדש
                      • מהחדש לישן
                      • הכי הרבה הצבעות


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

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

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