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

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

בנושא אופטמיזציה בניצול משאבים

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

    יש לי כמה שאלות בנושא, הנה הראשונה:
    אם יש לי מערך:

    Dim arr(1000000) As String
    For i = 0 To 1000000
        arr(i) = i.ToString
    Next
    arr = Nothing
    

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

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

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

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

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

    Array.Clear
    

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

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

    מעניין, עשיתי כך:

     Array.Clear(arr, 0, arr.Length)
    

    אבל ערכת העבודה במנהל המשימות לא ירדה.

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

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

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

    הClear לא עשוי בדוט נט לניקיון אלא פשוט להחזיר את כל ערכי המערך למצבם התחילתי.
    בעיקרון מבחינת המתכנת צריך לדאוג שאין רפרנסים חיים לאובייקטים מיותרים.
    לדוגמה אם יש אובייקט ענק ושדה שלו בשימוש איזה אירוע זה מונע הריסה של האובייקט, זה תחום אחירות המתכנת. כל השאר זה דאגה של ה"אוסף הזבל" של דוט נט.
    אבל במידה והמשתנה הוא בסקופ של פונקציה לדוגמה, אין צורך אפי' לאפס אותו, סוף התחום שלו הרוס אותו וממילא המידע שלו "יתום" וככזה הGC - "אספן הזבל" מוחק אותו [u:3n26xzb3]מתי שהוא[/u:3n26xzb3].
    בתכלס תוכל לראות שאם תעמיס אלפי מגה, מידי פעם תהיה "מחיקה" מסיבית, משא"כ במגה בודדים (מתחת למה שהוקצה לתוכנית מלתכחילה) מסיבות חיסכון בביצועים כנראה הGC לא עושה כלום.
    אפשר לאלץ את הGC לאסוף ככה: GC.Collect, אני חושב שזה לא מומלץ ולא יודע למה זה משמש, תוכל לראות שזה עשוה את העבודה באמת בצורה דרמטית מבחינת הזיכרון.

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

    פורסם במקור בפורום CODE613 ב06/04/2014 14:13 (+03:00)

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

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

  • התחברות

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

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

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

  • התחברו או הירשמו כדי לחפש.