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

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

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

מה זה ליסט בדוט נט

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

    להרחבת הידיעות אודות סוגי הקולקשיינס:
    http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx
    והנה עוד מMSDN

    בקשר לסוגי המילונים - מפתח-ערך, הנה תמונה מתוך ספר C# in nutshell שנותנת אינדיקציה לשם מה עשוייה כל אחת:

    Dictionarys.png

    לצפייה טובה לחצו קליק ימני על התמונה > פתח בכרטיסייה חדשה.
    המספרים הם אלפיות שניה, לביצוע 50,000 פעולות, במחשב הבדיקה (1.5 Ghz).

    ורחמים, אם אתה רוצה באמת עצות טובות, פרוש את התמונה במלואה, חסר הרבה פרטים שבירורם היה יכול לעזור לתשועה ברוב יועץ.

    פורסם במקור בפורום CODE613 ב07/04/2014 15:58 (+03:00)

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

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

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

      בתמונה דלעיל, מושך את העין מייד המספר הגדול 50,000 שמופיע כמה פעמים בשורת הListDictionary.
      למה זה כ"כ נורא? כי זה ממומש ע"י רשימה מקושרת...
      כפי שנראה אין לה שום מעלה בפעולות קולקשנים רגילים.

      פורסם במקור בפורום CODE613 ב07/04/2014 16:08 (+03:00)

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

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

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

        תודה רבה על כל המידע החשוב !
        @דוד ל.ט.

        ורחמים, אם אתה רוצה באמת עצות טובות, פרוש את התמונה במלואה, חסר הרבה פרטים שבירורם היה יכול לעזור לתשועה ברוב יועץ.

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

        כעת סיימתי את הנסיון, תחילה הכנסתי את כל המילים לרשימה אחת ארוכה, אח''כ מיינתי ואח''כ הסרתי כפולים במקום 20 דקות זה הסתיים ב 40 שניות עבור המיון ועוד 7 שניות עבור הסרת איחוד הכפולים !!!

        פורסם במקור בפורום CODE613 ב07/04/2014 16:16 (+03:00)

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

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

          פורסם במקור בפורום CODE613 ב07/04/2014 16:34 (+03:00)

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

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

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

            @רחמים

            כעת סיימתי את הנסיון, תחילה הכנסתי את כל המילים לרשימה אחת ארוכה, אח''כ מיינתי ואח''כ הסרתי כפולים במקום 20 דקות זה הסתיים ב 40 שניות עבור המיון ועוד 7 שניות עבור הסרת איחוד הכפולים !!!

            שתי שאלות:
            כמה איברים יש?
            איך הסרת כפולים?

            פורסם במקור בפורום CODE613 ב07/04/2014 16:57 (+03:00)

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

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

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

              כעת הרצתי שוב וזה הדוח:
              מספר פריטים 7,474,693
              מיון 00:00:29.7094737
              צירוף כפולים 00:00:04.0372530

              את הכפולים צירפתי בינהם [לא הסרתי] כך:
              יצרתי ליסט חדש
              עברתי בלולאה על כל הליסט הראשי
              הכנסתי את האיבר לליסט החדש
              בלולאה חדשה המשכתי להכניס את האיברים הבאים עד שהגיע איבר שונה
              ואז המשכתי בלולאה של הליסט הראשי

              בליסט החדש נוצרו 611,496 פריטים.

              פורסם במקור בפורום CODE613 ב07/04/2014 17:18 (+03:00)

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

                המיון + האיחוד הוא לכאורה בזבוז, כי המיון הוא לא רק סורק, אלא גם ממקם, ובמקרה שלך היה עדיף שכבר יאחד בנקודת זמן זו.
                השאלה איך לממש איחוד מהיר ללא מיון, הרי איחוד מחפש ובשביל חיפוש בינארי צריך מיון. התשובה היא שצריך רשימה חדשה למאוחדים (וזו רשימה הרבה יותר קצרה, ממילא המיון שלה זול יותר) שהיא תהיה ברת חיפוש מהיר כמו רשימה ממויינת.
                אבל, אף שאינני מבין איך, Dictionary מוצא מהר יותר מחיפוש בינארי. וממילא עדיף Dictionary.

                לפי מה שנראה לי, Dictionary מהתחלה יעשה את העבודה מהר יותר.

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

                פורסם במקור בפורום CODE613 ב07/04/2014 19:24 (+03:00)

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

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

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

                  @דוד ל.ט.

                  השאלה איך לממש איחוד מהיר ללא מיון, הרי איחוד מחפש ובשביל חיפוש בינארי צריך מיון.

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

                  ובאובייקט היעד (המאוחד) יהיה מערך ולא ליסט (חיסכון בזיכרון).

                  גם אני נוכחתי לראות שמערך לוקח פחות זכרון מאשר ליסט אבל למה זה? הרי גם הליסט מבוסס על מערך?

                  פורסם במקור בפורום CODE613 ב07/04/2014 20:33 (+03:00)

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

                    שוב, לדעתי המיון מיותר. מתשובתך ניכר שנמאס לך לעיין בנושא...

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

                    פורסם במקור בפורום CODE613 ב08/04/2014 11:19 (+03:00)

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

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

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

                      לא נמאס לי לעיין...
                      לא הבנתי למה המיון מיותר איך אפשר לעשות את זה יותר מהר?
                      @דוד ל.ט.

                      בקשר לליסט מול מערך זה מאוד פשוט, מערך לוקח בדיוק את הגדול שהוא תופס, וליסט תופס מראש מקומות לאפשר הוספה.

                      ההבדל בין ליסט למערך הוא פי כמה למשל בקוד הבא המערך הוסיף לתוכנה 3 מגה והליסט 7 מגה

                      Dim arr(700000) As Integer
                              For i = 0 To 700000
                                  arr(i) = i
                              Next
                      
                              Dim list As New List(Of Integer)
                              For i = 0 To 700000
                                  list.Add(i)
                              Next
                      

                      אם זה רק כדי לתפוס מקום מראש זה לא היה אמור להיות כזה הבדל.

                      פורסם במקור בפורום CODE613 ב08/04/2014 11:50 (+03:00)

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

                        רחמים, מיצית אותי.
                        הצלחה בכל.

                        פורסם במקור בפורום CODE613 ב08/04/2014 11:58 (+03:00)

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

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

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

                          רחמים מה נסגר?
                          אתה מנהל לבד את הזכרון, או בסוף משתמש ב-sql?

                          פורסם במקור בפורום CODE613 ב31/08/2015 22:39 (+03:00)

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

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

                            פורסם במקור בפורום CODE613 ב31/08/2015 22:45 (+03:00)

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

                              UInt32BE בגודל 4 בתים?
                              (מקשקש מושגים ששמעתי אך אתמול 🙂 )

                              פורסם במקור בפורום CODE613 ב31/08/2015 22:54 (+03:00)

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

                                בדוטנט יש uint32 והוא בגודל 4 בתים באמת
                                שהרי 32 לחלק ל8 = 4
                                אבל איך זה קשור לכאן?

                                פורסם במקור בפורום CODE613 ב31/08/2015 22:58 (+03:00)

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

                                  כנראה שלא קשור.
                                  איפה אני מוצא חומר על שמירה בינארית?

                                  פורסם במקור בפורום CODE613 ב31/08/2015 23:00 (+03:00)

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

                                    האמת טעיתי באשכול
                                    התכוונתי לזה
                                    http://tchumim.com/topic/120

                                    פורסם במקור בפורום CODE613 ב31/08/2015 23:04 (+03:00)

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

                                      @אהרן

                                      כנראה שלא קשור.
                                      איפה אני מוצא חומר על שמירה בינארית?

                                      עיין כאן לגבי סריליזציה בינארית.
                                      וכמובן שאין קשר בין חייפוש בינארי לשמירה בינארית.. כאן מדובר על שמירה בשפת המכונה של המחשב דהיינו 0 ו1.

                                      פורסם במקור בפורום CODE613 ב31/08/2015 23:25 (+03:00)

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

                                        דוד ורחמים, שניכם בעצם מדברים על נושאים שהוא הוא ליבת העניין של פיתוח מסד נתונים, האומנם??? אם משהו לוקח לך 20 דקות כדי לבדוק אם קיים במערך, תאמין לי שכבר רבים וטובים עשו את זה לפניך, לתוכנה הזו קורים "דטה בייס" ויש כמה סוגים. יש אלגוריתמי על שמפותחים כל הזמן ומושקעים מאות מיליונים בשביל מטרות אלו על ידי ענקיות הטכנולוגיה.
                                        עבור טיפול בכמות המידע שאתה מדבר הייתי ממליץ לך ללכת על מסד נתונים כלשהו, מבוסס דיסק קשיח או מבוסס ממורי (יש כמה, ולמשל ב mysql אפשר לבנות טבלאות שלמות מבוססות ממורי) והם עושים את העבודה מצויין!!! למה להמציא את הגלגל כשאפשר להמציא את העגלה?

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

                                        פורסם במקור בפורום CODE613 ב01/09/2015 01:00 (+03:00)

                                        אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

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

                                          כאן מדובר על מנוע חיפוש לא מתאים לזה דטה-בייס בשום אופן
                                          וברוך ה' מנוע החיפוש עובד מצויין ומהר מאוד, לדוגמא חיפוש של שתי מילים, עם מרחק 30 בינהם, בכל מאגר היברובוקס שיש בו 52 אלף ספרים [530 גיגה] לוקח קצת יותר משניה.

                                          פורסם במקור בפורום CODE613 ב01/09/2015 10:05 (+03:00)

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

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

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

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