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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. כיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#)

כיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#)

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 5 כותבים 217 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    השיב לקומפיונט נערך לאחרונה על ידי pcinfogmach
    #7

    @קומפיונט
    הבנתי אז זהו הדרך האופטימלית להשתמש עם zlobs תודה - אנסה ליישם זאת.

    תגובה 1 תגובה אחרונה
    1
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לpcinfogmach נערך לאחרונה על ידי yossiz
      #8

      @pcinfogmach כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

      ברם אם הבנתי נכון Zlob תופס הרבה יותר מקום מאשר קובץ שכולו מכווץ

      כדי לקבל random access נדמה לי שאין לך ברירה. מה שכן אפשר לבדוק זה אפשרות של "מילון" מותאם אישית משותף לכל ה-blob-ים המכווצים. זה אמור להיות כמעט זהה לכיווץ כל הקובץ (ההשפעה שיהיה לזה על הדחיסה תלוי מאוד בתוכן ה-blob-ים)
      ע"ע: https://github.com/EamonNerbonne/ZlibWithDictionary

      נ.ב. אם לא היה מספיק ברור: zlob זו מילה מומצאת ל-blob מכווץ
      עריכה: אני רואה ש-mysql כבר המציאו את המילה

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      2
      • OdedDvirO מנותק
        OdedDvirO מנותק
        OdedDvir
        השיב לpcinfogmach נערך לאחרונה על ידי
        #9

        @pcinfogmach כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

        @OdedDvir
        תודה ברם אם הבנתי נכון Zlob תופס הרבה יותר מקום מאשר קובץ שכולו מכווץ.

        בעיקרון זה נכון, כי כיווץ עובד על תדירות של מופעים זהים של מידע, וההסתברות לחזרה של מידע היא ביחס ישר לכמות המידע

        @yossiz כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

        עריכה: אני רואה ש-mysql כבר המציאו את המילה

        חח, אשרי שכיוונתי 🤣

        dovidD תגובה 1 תגובה אחרונה
        2
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          השיב לOdedDvir נערך לאחרונה על ידי dovid
          #10

          @OdedDvir כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

          בעיקרון זה נכון, כי כיווץ עובד על תדירות של מופעים זהים של מידע, וההסתברות לחזרה של מידע היא ביחס ישר לכמות המידע

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

          @pcinfogmach
          אם מדובר בחתיכות קטנות יותר, אז אני מבין סוף סוף את השאלה. התשובה היא הכיוון ש@yossiz הציע, דחיסה מבוססת מילון משותף, או מילון סטטי.
          אם אני מנחש נכון ומדובר בטקסטים תורניים זה עלול גם לשפר יעילות+ביצועי דחיסה/פריסה.

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

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

          dovidD pcinfogmachP 2 תגובות תגובה אחרונה
          2
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            כתב נערך לאחרונה על ידי dovid
            #11

            ניסיתי כעת בעצמי את ספריית ZstdNet על קובץ יבמות של תורת אמת (MN_YEVAMOT_L2.txt) עם אימון מול כל השורות ודחיסה של כל שורה בנפרד, תוצאות מצויינות: כלל השורות ביחד 12% לעומת 40% בGZipStream.

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

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

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

              @dovid כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

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

              יעילות הדחיסה אכן השתפרה:

              ניסיתי כעת בעצמי את ספריית ZstdNet על קובץ יבמות של תורת אמת (MN_YEVAMOT_L2.txt) עם אימון מול כל השורות ודחיסה של כל שורה בנפרד, תוצאות מצויינות: כלל השורות ביחד 12% לעומת 40% בGZipStream.

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

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

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

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

                @dovid כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

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

                ZstdNet יותר יעיל משמעותית בחילוץ עם מילון (יותר מפי שלוש מחילוץ gzip).

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

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

                תגובה 1 תגובה אחרונה
                2
                • pcinfogmachP מנותק
                  pcinfogmachP מנותק
                  pcinfogmach
                  השיב לdovid נערך לאחרונה על ידי pcinfogmach
                  #14
                  פוסט זה נמחק!
                  תגובה 1 תגובה אחרונה
                  0
                  • pcinfogmachP מנותק
                    pcinfogmachP מנותק
                    pcinfogmach
                    השיב לdovid נערך לאחרונה על ידי
                    #15

                    @dovid
                    איך עושים את האימון?

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב נערך לאחרונה על ידי dovid
                      #16
                      var file = toratEmetLoc + @"020_MISHNA\102_SEDER_NASHIM\24_MAS_YEVAMOT\MN_YEVAMOT_L2.txt";
                      
                      System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
                      var text = File.ReadAllText(file, Encoding.GetEncoding(1255));
                      var lines = text.Split('\n');
                      var linesAsBytes = lines.Select(l => Encoding.UTF8.GetBytes(l)).ToArray();
                      
                      //train
                      var dic = DictBuilder.TrainFromBuffer(linesAsBytes.Where(l => l.Length > 100));
                      var option = new CompressionOptions(dic, CompressionOptions.MaxCompressionLevel);
                      
                      using var compressor = new Compressor(option);
                      var perLineZstd = linesAsBytes.Select(x => compressor.Wrap(x));
                      

                      זה רק להדגמה,
                      במציאות אתה תשמור את תוצאות האימון לקובץ ומשם תטען אותו בהמשך.

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

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

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

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

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

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