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

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

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

דיון בנושא הביצועים בJS

מתוזמן נעוץ נעול הועבר תכנות
32 פוסטים 3 כותבים 2.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לzvizvi ב נערך לאחרונה על ידי
    #5

    @zvizvi אמר בדיון בנושא הביצועים בJS:

    [1, 2].includes(1)
    

    מהיר יותר מ

    [1, 2].indexOf(1) > 0
    

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

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

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

    zvizviZ תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לאהרן ב נערך לאחרונה על ידי
      #6

      @אהרן אמר בדיון בנושא הביצועים בJS:

      @dovid אמר בתכנות יעיל וביצועים, בJS (בפרט):

      indexOf מהיר

      עם זאת, חיפוש ע"י גישה למאפיין, מהיר יותר.

      [1,2,3].forEach (key => isUpThree[key]: true)
      isUpThree[2]
      vs
      [1,2,3].indexOf(2)
      

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

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

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

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

        @אהרן אמר בדיון בנושא הביצועים בJS:

        @dovid
        מאוד אודה לך, אם תהפוך את הקטעים ללינקים (לכאורה עדיף ישר לדף הטסט, אם לא אז למאמר).

        בל"נ אשתדל בהמשך.

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

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

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

          @dovid אמר בדיון בנושא הביצועים בJS:

          @אהרן אמר בדיון בנושא הביצועים בJS:

          @dovid אמר בתכנות יעיל וביצועים, בJS (בפרט):

          indexOf מהיר

          עם זאת, חיפוש ע"י גישה למאפיין, מהיר יותר.

          [1,2,3].forEach (key => isUpThree[key]: true)
          isUpThree[2]
          vs
          [1,2,3].indexOf(2)
          

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

          אכן, אתקן א"ע
          זה שווה ללבנות אינדקס ל-DB, או לשימוש במצביע.

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

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

          obj['eliezer'] = {8: true, 549: true, 155895: true}
          

          (למה הקוד מתחרבש??)
          אז בודקים

          Object.keys(ovj['eliezer']).forEach( (startPos) => {
             if(obj['eat'].startPos+1) {}
          }
          
          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #9

            אתם צודקים.
            יש שלושה אפשרויות באיתור ערך באוסף:

            1. לדעת אם ישנו (includes)
            2. לקבל אותו לפי קריטריון (find אבל עדיך לבנות מילון)
            3. לדעת את מיקומו - indexOf.

            @אהרן ספציפית את הדוגמה שלך לא הבנתי אבל אני מסכים שלבנות מילון תמיד יותר טוב (חוץ מהזיכרון שב"כ זה שולי).

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

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

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

              @dovid אמר בתכנות יעיל וביצועים, בJS (בפרט):

              אני משתמש בעיקר בו http://jsbench.github.io/.

              איך עובדים עם האתר הזה?
              איפה שמים את הקוד המקדים?

              תסתכל ע"ז
              http://jsbench.github.io/#13fd0426ba617c8d0e58d87d3f23675b

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

                @dovid אמר בדיון בנושא הביצועים בJS:

                אני מסכים שלבנות מילון תמיד יותר טוב (חוץ מהזיכרון שב"כ זה שולי).

                זה ברור
                לא תמיד ברור איך כותבים את המילון הזה.

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

                  @אהרן אמר בדיון בנושא הביצועים בJS:

                  @dovid אמר בתכנות יעיל וביצועים, בJS (בפרט):

                  אני משתמש בעיקר בו http://jsbench.github.io/.

                  איך עובדים עם האתר הזה?
                  איפה שמים את הקוד המקדים?

                  למטה בצד שמאל Setup.

                  תסתכל ע"ז
                  http://jsbench.github.io/#13fd0426ba617c8d0e58d87d3f23675b

                  אנחנו עוד בArray עוד לא בString.

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

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

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • zvizviZ מנותק
                    zvizviZ מנותק
                    zvizvi
                    השיב לdovid ב נערך לאחרונה על ידי zvizvi
                    #13

                    @dovid אמר בדיון בנושא הביצועים בJS:

                    @zvizvi אמר בדיון בנושא הביצועים בJS:

                    [1, 2].includes(1)
                    

                    מהיר יותר מ

                    [1, 2].indexOf(1) > 0
                    

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

                    הסיבה שהבאתי את זה, כי עד לאחרונה לא היתה האפשרות לבדוק ב includes וכולם השתמשו ב indexOf >= 0
                    כאשר הוסיפו את includes חשבתי לתומי שזה סה"כ קיצור דרך ל indexOf >= 0 ואין הבדל בביצועים. לכן בדקתי וזה לא נכון.

                    ועוד משהו includes טיפ-טיפה מהיר יותר גם אם לא תבדוק את התוצאה, עצם זה שהוא מחפש גם את המיקום, כנראה, מוסיף משקל,
                    בנוסף includes יכול לעצור ברגע שהוא מצא התאמה, indexOf לא.

                    https://zvizvi.xyz

                    dovidD תגובה 1 תגובה אחרונה
                    1
                    • zvizviZ מנותק
                      zvizviZ מנותק
                      zvizvi
                      כתב ב נערך לאחרונה על ידי
                      #14

                      https://coderwall.com/p/_ggh2w/the-array-native-every-filter-map-some-foreach-methods

                      https://zvizvi.xyz

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

                        @zvizvi אמר בדיון בנושא הביצועים בJS:

                        ועוד משהו includes טיפ-טיפה מהיר יותר גם אם לא תבדוק את התוצאה, עצם זה שהוא מחפש גם את המיקום, כנראה, מוסיף משקל,

                        מבדיקה שלי זה לא הצלחתי למצוא הבדל של ממש, ראה http://jsbench.github.io/#82277a913ae25629ce943346c7ce8183
                        אכן ממה שאנשים אומרים https://stackoverflow.com/q/47659972/1271037 נראה שבגירסאות כרום האחרונות זה מהר יותר.

                        בנוסף includes יכול לעצור ברגע שהוא מצא התאמה, indexOf לא.

                        למה? שניהם עוצרים ברגע שהם מוצאים.

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

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

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

                          @zvizvi אמר בדיון בנושא הביצועים בJS:

                          https://coderwall.com/p/_ggh2w/the-array-native-every-filter-map-some-foreach-methods

                          מה יש במובאה זו?

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

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

                          zvizviZ תגובה 1 תגובה אחרונה
                          0
                          • zvizviZ מנותק
                            zvizviZ מנותק
                            zvizvi
                            השיב לdovid ב נערך לאחרונה על ידי
                            #17

                            @dovid אמר בדיון בנושא הביצועים בJS:

                            @zvizvi אמר בדיון בנושא הביצועים בJS:

                            https://coderwall.com/p/_ggh2w/the-array-native-every-filter-map-some-foreach-methods

                            מה יש במובאה זו?

                            השוואה בין כל סוגי האיטרציות על מערכים

                            https://zvizvi.xyz

                            תגובה 1 תגובה אחרונה
                            0
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              כתב ב נערך לאחרונה על ידי
                              #18

                              @zvizvi אמר בדיון בנושא הביצועים בJS:

                              @dovid אמר בדיון בנושא הביצועים בJS:

                              @zvizvi אמר בדיון בנושא הביצועים בJS:

                              https://coderwall.com/p/_ggh2w/the-array-native-every-filter-map-some-foreach-methods

                              מה יש במובאה זו?

                              השוואה בין כל סוגי האיטרציות על מערכים

                              אבל לא במובן של ביצועים.
                              פה יש https://github.com/dg92/Performance-Analysis-JS

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

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

                              תגובה 1 תגובה אחרונה
                              0
                              • א מנותק
                                א מנותק
                                אהרן
                                השיב לdovid ב נערך לאחרונה על ידי
                                #19

                                @dovid אמר בדיון בנושא הביצועים בJS:

                                ראה http://jsbench.github.io/#82277a913ae25629ce943346c7ce8183

                                איפה רשום מה מכיל ARR?

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

                                  @dovid אמר בדיון בנושא הביצועים בJS:

                                  @אהרן אמר בדיון בנושא הביצועים בJS:

                                  @dovid אמר בתכנות יעיל וביצועים, בJS (בפרט):

                                  אני משתמש בעיקר בו http://jsbench.github.io/.

                                  איך עובדים עם האתר הזה?
                                  איפה שמים את הקוד המקדים?

                                  למטה בצד שמאל Setup.

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

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

                                  א תגובה 1 תגובה אחרונה
                                  0
                                  • א מנותק
                                    א מנותק
                                    אהרן
                                    השיב לdovid ב נערך לאחרונה על ידי
                                    #21

                                    @dovid
                                    יהיה נוח אם תכניס כאן לינק לדיון פה

                                    בנוגע ל:
                                    כשידוע האורך מראש (ובמערכים לא גדולים במיוחד), יש לאתחל את המערך עם Array(length).

                                    הטסט הזה מראה שזה משתלם גם בטווח גדול של טעות.

                                    dovidD תגובה 1 תגובה אחרונה
                                    0
                                    • א מנותק
                                      א מנותק
                                      אהרן
                                      כתב ב נערך לאחרונה על ידי
                                      #22

                                      בנוגע ל-PUSH
                                      זה מראה להיפך.

                                      dovidD תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD מנותק
                                        dovidD מנותק
                                        dovid ניהול
                                        השיב לאהרן ב נערך לאחרונה על ידי
                                        #23

                                        @אהרן אמר בדיון בנושא הביצועים בJS:

                                        בנוגע ל-PUSH
                                        זה מראה להיפך.

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

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

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

                                        תגובה 1 תגובה אחרונה
                                        1
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          השיב לאהרן ב נערך לאחרונה על ידי
                                          #24

                                          @אהרן אמר בדיון בנושא הביצועים בJS:

                                          @dovid
                                          יהיה נוח אם תכניס כאן לינק לדיון פה

                                          בנוגע ל:
                                          כשידוע האורך מראש (ובמערכים לא גדולים במיוחד), יש לאתחל את המערך עם Array(length).

                                          הטסט הזה מראה שזה משתלם גם בטווח גדול של טעות.

                                          תודה גם לזאת!
                                          כעת בדקתי, והמקרה היחיד בו הייתה עדיפות על Array הייתה במקרה של 100000000 ערכים... מעדכן גם את זה.

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

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

                                          א תגובה 1 תגובה אחרונה
                                          0

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

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

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